package it.apuliait.mvc;

import it.apuliait.NoSuchDatiTrasportoException;
import it.apuliait.NoSuchTrasmittenteException;
import it.apuliait.model.DatiTrasporto;
import it.apuliait.model.Documento;
import it.apuliait.model.DocumentoXml;
import it.apuliait.model.LineaFattura;
import it.apuliait.model.Pagamenti;
import it.apuliait.model.Ricevente;
import it.apuliait.model.TerzoIntermediario;
import it.apuliait.model.Trasmittente;
import it.apuliait.service.DatiTrasportoLocalServiceUtil;
import it.apuliait.service.DocumentoLocalServiceUtil;
import it.apuliait.service.DocumentoXmlLocalServiceUtil;
import it.apuliait.service.LineaFatturaLocalServiceUtil;
import it.apuliait.service.PagamentiLocalServiceUtil;
import it.apuliait.service.RiceventeLocalServiceUtil;
import it.apuliait.service.TerzoIntermediarioLocalServiceUtil;
import it.apuliait.service.TrasmittenteLocalServiceUtil;
import it.apuliait.util.Utility;

import java.io.BufferedInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.io.StringWriter;

import javax.activation.MimetypesFileTypeMap;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.PortletSession;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.servlet.http.HttpServletRequest;
import javax.sound.sampled.Line;

import java.io.File;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
 
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.IOUtils;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;


import com.liferay.counter.service.CounterLocalServiceUtil;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.ProjectionFactoryUtil;
import com.liferay.portal.kernel.dao.orm.ProjectionList;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.upload.UploadPortletRequest;
import com.liferay.portal.kernel.util.FileUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.documentlibrary.model.DLFileEntry;
import com.liferay.portlet.documentlibrary.model.DLFolder;
import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;

public class FatturazionePA extends MVCPortlet {
	public enum Scelta { CREA_FILE, DOCUMENTI_TRASPORTO, TRASPORTO, TRASMETTI_FILE, ELIMINA_COMPETENZA, MODIFICA_RICEVENTE, ELENCO_RICEVENTE,
						 PAGAMENTO, ELENCO_DOCUMENTI, REGISTRA_IMPRESA, MODIFICA_IMPRESA, NUOVO_DOCUMENTO,
						 MODIFICA_DOCUMENTO, AGGIUNGI_COMPETENZA, AGGIUNGI_COMMITTENTE, MODIFICA_COMPETENZA
					    }
	DecimalFormat decimalFormat = new DecimalFormat("#0.00");
	SimpleDateFormat formatoData = new SimpleDateFormat("yyyy-MM-dd");
	SimpleDateFormat formatoDataOra = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	
	SimpleDateFormat dda = new SimpleDateFormat("yyyy");
	
	public  void doView (RenderRequest renderRequest, RenderResponse renderResponse) throws PortletException, IOException 
    {

		String documentoId  = renderRequest.getParameter("documentoId");
		String riceventeId  = renderRequest.getParameter("riceventeId");
		String trasmittenteId  = renderRequest.getParameter("trasmittenteId");
		String competenzaId  = renderRequest.getParameter("competenzaId");
		Documento doc = (Documento)renderRequest.getPortletSession().getAttribute("documento", PortletSession.APPLICATION_SCOPE);
		String docId = (String)renderRequest.getPortletSession().getAttribute("documentoId", PortletSession.APPLICATION_SCOPE);
		//LineaFattura lineaFattura = (LineaFattura)renderRequest.getPortletSession().getAttribute("lineaFattura", PortletSession.APPLICATION_SCOPE);
		Scelta menu = (Scelta)renderRequest.getPortletSession().getAttribute("menu", PortletSession.APPLICATION_SCOPE);	
		String scelta  = renderRequest.getParameter("scelta");

		if(scelta != null && menu == null)
		{
			menu = Scelta.valueOf(scelta);
		} else if(scelta == null && menu ==null){
			menu = Scelta.ELENCO_DOCUMENTI;
		}
			
		switch (menu) {

			case TRASPORTO :
			{
				renderRequest.getPortletSession().setAttribute("documento", null, PortletSession.APPLICATION_SCOPE);
				renderRequest.getPortletSession().setAttribute("menu", null, PortletSession.APPLICATION_SCOPE);
				
				try {
					DatiTrasporto d = DatiTrasportoLocalServiceUtil.getDatoTrasporto(doc.getDocumentoId());
					renderRequest.setAttribute("dati", d);
					include("/modifica-dati-trasporto.jsp", renderRequest, renderResponse);		
				} catch (NoSuchDatiTrasportoException e) {
					renderRequest.setAttribute("documento", doc);
					include("/dati-trasporto.jsp", renderRequest, renderResponse);		
				} catch (SystemException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}break;
		
			case TRASMETTI_FILE :
			{
				
				List<Documento> list_documento = new ArrayList<Documento>();
				renderRequest.setAttribute("list_documento", list_documento);
				renderRequest.setAttribute("trasmittenteId", trasmittenteId);
				include("/trasmetti-file.jsp", renderRequest, renderResponse);		
			}break;
		
			case PAGAMENTO :
			{
				try{
					Documento d = DocumentoLocalServiceUtil.getDocumento(Long.valueOf(documentoId));
					Trasmittente trasmittente = TrasmittenteLocalServiceUtil.getTrasmittente(d.getTrasmittenteIDFK());
					Pagamenti p = PagamentiLocalServiceUtil.getPagamento(Long.valueOf(documentoId));
					double importoPagamento = Double.valueOf(d.getImportoTotale())-Double.valueOf(d.getImportoRitenuta());
					p.setImportoPagamento(String.valueOf(importoPagamento));
					String beneficiario = "";
					if(trasmittente.getNome().length() > 0 && trasmittente.getCognome().length() > 0){
						beneficiario = trasmittente.getNome()+" "+trasmittente.getCognome();
					}else if(trasmittente.getRagioneSociale().length() > 0){
						beneficiario = trasmittente.getRagioneSociale();
					}
					p.setBeneficiario(beneficiario);
					PagamentiLocalServiceUtil.updatePagamenti(p);
					
					renderRequest.setAttribute("pagamento", p);
					include("/modifica-pagamenti.jsp", renderRequest, renderResponse);
				}catch(Exception e){
					renderRequest.setAttribute("documentoId", documentoId);
					include("/pagamenti.jsp", renderRequest, renderResponse);	
				}
						
			}break;
		
			case ELENCO_RICEVENTE :
			{
				include("/elenco-riceventi.jsp", renderRequest, renderResponse);			
			}break;
			
			case MODIFICA_RICEVENTE :
			{
				try {
					Ricevente ricevente = RiceventeLocalServiceUtil.getRicevente(Long.valueOf(riceventeId));
					renderRequest.setAttribute("ricevente", ricevente);
					include("/modifica-ricevente.jsp", renderRequest, renderResponse);	
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (PortalException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (SystemException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
						
			}break;
			
			case REGISTRA_IMPRESA :
			{
				try {
					ThemeDisplay themeDisplay = (ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
					Trasmittente trasmittente = TrasmittenteLocalServiceUtil.getTrasmittenteByUserId(themeDisplay.getUserId());
					renderRequest.setAttribute("trasmittente", trasmittente);
					include("/modifica-trasmittente.jsp", renderRequest, renderResponse);
				} catch (SystemException e) {
					e.printStackTrace();
				} catch (NoSuchTrasmittenteException e) {
					include("/registra-trasmittente.jsp", renderRequest, renderResponse);
				}	
			}break;
		
			case NUOVO_DOCUMENTO :
			{
				try {
					renderRequest.setAttribute("list_ricevente", elencoRicevente());
					include("/nuovo-documento.jsp",renderRequest,renderResponse);
				} catch (SystemException e) {
					e.printStackTrace();
				}			
			}break;
			
			case MODIFICA_DOCUMENTO :
			{
				try {
					renderRequest.getPortletSession().setAttribute("documentoId", null, PortletSession.APPLICATION_SCOPE);
					renderRequest.getPortletSession().setAttribute("menu", null, PortletSession.APPLICATION_SCOPE);
					// salvo imponibileCassa
					
					if(docId != null) documentoId = docId;
					
					Documento d = DocumentoLocalServiceUtil.getDocumento(Long.valueOf(documentoId));
					
					double imponibileIva = imponibileCassa(documentoId) + ( imponibileCassa(documentoId) * Double.valueOf(d.getAliquotaCassa()) / 100) ;
					double imponibileRitenuta = imponibileCassa(documentoId) * (Double.valueOf(d.getAliquotaRitenuta()) / 100);
					double calcoloIva = imponibileIva * (Double.valueOf(d.getAliquotaIvaCassa()) / 100);
					double contributoCassa = imponibileCassa(documentoId) * (Double.valueOf(d.getAliquotaCassa()) / 100);
					double imponibileCassa = imponibileCassa(documentoId);
					
					double importoTotale = 0;
					
					if(imponibileCassaSenzaRitenuta(documentoId) != 0)
						importoTotale = (calcoloIva - imponibileRitenuta) + imponibileCassaSenzaRitenuta(documentoId);
					else
						importoTotale = imponibileCassa + contributoCassa + calcoloIva;
					
					d.setImportoRitenuta(decimalFormat.format(imponibileRitenuta).replace(",", "."));
					d.setImponibileCassa(decimalFormat.format(imponibileCassa).replace(",", "."));
					d.setImportoContributoCassa(decimalFormat.format(contributoCassa).replace(",", "."));
					d.setImportoTotale(decimalFormat.format(importoTotale).replace(",", "."));
					
					DocumentoLocalServiceUtil.updateDocumento(d);
					
					renderRequest.setAttribute("documento", d);
					renderRequest.setAttribute("list_ricevente", elencoRicevente());
					renderRequest.setAttribute("list_competenze", elencoCompetenze(documentoId));
					
					include("/modifica-documento.jsp",renderRequest,renderResponse);
				} catch (SystemException e) {
					e.printStackTrace();
				} catch (NumberFormatException e) {
					e.printStackTrace();
				} catch (PortalException e) {
					e.printStackTrace();
				}			
			}break;
			
			case AGGIUNGI_COMPETENZA :
			{
				renderRequest.getPortletSession().setAttribute("documento", null, PortletSession.APPLICATION_SCOPE);
				renderRequest.getPortletSession().setAttribute("menu", null, PortletSession.APPLICATION_SCOPE);
				List<LineaFattura> list_competenze = new ArrayList<LineaFattura>();
				try {
					list_competenze = elencoCompetenze(String.valueOf(doc.getDocumentoId()));
				} catch (SystemException e) {
					e.printStackTrace();
				}
				renderRequest.setAttribute("numeroLinea", list_competenze.size() + 1);
				renderRequest.setAttribute("documento", doc);
				include("/nuova-linea-fattura.jsp",renderRequest,renderResponse);			
			}break;
			
			case ELIMINA_COMPETENZA :
			{
				try {
					LineaFatturaLocalServiceUtil.deleteLineaFattura(Long.valueOf(competenzaId));			
					
					// salvo imponibileCassa
					Documento d = DocumentoLocalServiceUtil.getDocumento(Long.valueOf(documentoId));
					
					double imponibileIva = imponibileCassa(documentoId) + ( imponibileCassa(documentoId) * Double.valueOf(d.getAliquotaCassa()) / 100) ;
					double imponibileRitenuta = imponibileCassa(documentoId) * (Double.valueOf(d.getAliquotaRitenuta()) / 100);
					double calcoloIva = imponibileIva * (Double.valueOf(d.getAliquotaIvaCassa()) / 100);
					double contributoCassa = imponibileCassa(documentoId) * (Double.valueOf(d.getAliquotaCassa()) / 100);
					double imponibileCassa = imponibileCassa(documentoId);
					
					double importoTotale = 0;
					
					if(imponibileCassaSenzaRitenuta(documentoId) != 0)
						importoTotale = (calcoloIva - imponibileRitenuta) + imponibileCassaSenzaRitenuta(documentoId);
					else
						importoTotale = imponibileCassa + contributoCassa + calcoloIva;
					
					d.setImportoRitenuta(decimalFormat.format(imponibileRitenuta).replace(",", "."));
					d.setImponibileCassa(decimalFormat.format(imponibileCassa).replace(",", "."));
					d.setImportoContributoCassa(decimalFormat.format(contributoCassa).replace(",", "."));
					d.setImportoTotale(decimalFormat.format(importoTotale).replace(",", "."));
					
					DocumentoLocalServiceUtil.updateDocumento(d);
					
					renderRequest.setAttribute("documento", d);
					renderRequest.setAttribute("list_ricevente", elencoRicevente());
					renderRequest.setAttribute("list_competenze", elencoCompetenze(documentoId));
					
					include("/modifica-documento.jsp",renderRequest,renderResponse);	
				} catch (SystemException e) {
					e.printStackTrace();
				} catch (NumberFormatException e) {
					e.printStackTrace();
				} catch (PortalException e) {
					e.printStackTrace();
				}
			}break;
			
			case MODIFICA_COMPETENZA :
			{
				try {
					renderRequest.getPortletSession().setAttribute("documento", null, PortletSession.APPLICATION_SCOPE);
					renderRequest.getPortletSession().setAttribute("menu", null, PortletSession.APPLICATION_SCOPE);
					LineaFattura lineaFattura = LineaFatturaLocalServiceUtil.getLineaFattura(Long.valueOf(competenzaId));
					renderRequest.setAttribute("lineaFattura", lineaFattura);
					include("/modifica-linea-fattura.jsp",renderRequest,renderResponse);	
				} catch (SystemException e) {
					e.printStackTrace();
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (PortalException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}break;
			
			case AGGIUNGI_COMMITTENTE :
			{
				renderRequest.getPortletSession().setAttribute("menu", null, PortletSession.APPLICATION_SCOPE);
				include("/nuovo-committente.jsp",renderRequest,renderResponse);			
			}break;
			
			case ELENCO_DOCUMENTI :
			{
				try {
					renderRequest.getPortletSession().setAttribute("menu", null, PortletSession.APPLICATION_SCOPE);
					renderRequest.setAttribute("list_documento", elencoDocumento());
					include("/view.jsp",renderRequest,renderResponse);
				} catch (SystemException e) {
					e.printStackTrace();
				}		
			}break;
			
			default:
	        {
	        	try {
					renderRequest.setAttribute("list_documento", elencoDocumento());
					include("/view.jsp",renderRequest,renderResponse);
				} catch (SystemException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	private double imponibileCassa(String documentoId) throws SystemException
	{
		List<LineaFattura> list_competenze = LineaFatturaLocalServiceUtil.getLineaFatturas(0, CounterLocalServiceUtil.getCountersCount());
		double imponibileCassa = 0;
		for(LineaFattura l : list_competenze)
		{
			if(l.getDocumentoIDFK() == Long.valueOf(documentoId) && l.getRitenuta().equalsIgnoreCase("si"))
				imponibileCassa = imponibileCassa + Double.valueOf(l.getPrezzoTotale());
		}
		
		return imponibileCassa;
	}
	
	private double imponibileCassaSenzaRitenuta(String documentoId) throws SystemException
	{
		List<LineaFattura> list_competenze = LineaFatturaLocalServiceUtil.getLineaFatturas(0, CounterLocalServiceUtil.getCountersCount());
		double imponibileCassa = 0;
		
		for(LineaFattura l : list_competenze)
		{
			if(l.getDocumentoIDFK() == Long.valueOf(documentoId) && l.getRitenuta().equalsIgnoreCase("no"))
				imponibileCassa = imponibileCassa + Double.valueOf(l.getPrezzoTotale());
		}
		
		return imponibileCassa;
	}
	
	
	private List<LineaFattura> elencoCompetenze(String documentoId) throws SystemException{
		List<LineaFattura> list_competenze = LineaFatturaLocalServiceUtil.getLineaFatturas(0, CounterLocalServiceUtil.getCountersCount());
		List<LineaFattura> competenze = new ArrayList<LineaFattura>();
		for(LineaFattura l : list_competenze)
		{
			if(l.getDocumentoIDFK() == Long.valueOf(documentoId))
				competenze.add(l);
		}
		return competenze;
	}
	
	private List<Ricevente> elencoRicevente() throws SystemException
	{
		List<Ricevente> list_ricevente = RiceventeLocalServiceUtil.getRiceventes(0, CounterLocalServiceUtil.getCountersCount());
		return list_ricevente;
	}
	
	private List<Documento> elencoDocumento() throws SystemException
	{
		List<Documento> list_documento = DocumentoLocalServiceUtil.getDocumentos(0, CounterLocalServiceUtil.getCountersCount());
		return list_documento;
	}

	public void aggiungiCompetenza(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException {
			
			System.out.println("*** Inside aggiungiCompetenza ****");
			HttpServletRequest documentoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			String documentoId = documentoIdReq.getParameter("documentoId");
			Documento documento = DocumentoLocalServiceUtil.getDocumento(Long.valueOf(documentoId));
		
			actionRequest.getPortletSession().setAttribute("documento", documento, PortletSession.APPLICATION_SCOPE);
			actionRequest.setAttribute("menu", Scelta.AGGIUNGI_COMPETENZA);
		
	}

	public void documentiTrasporto(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException {
			System.out.println("*** Inside documentiTrasporto ****");
			String documentoId = "";
			if(ParamUtil.getString(actionRequest , "documentoId") != null)
			{ 
				documentoId = ParamUtil.getString(actionRequest , "documentoId"); 
			} 
			else {
				HttpServletRequest documentoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				documentoId = documentoIdReq.getParameter("documentoId");
			} 
			Documento documento = DocumentoLocalServiceUtil.getDocumento(Long.valueOf(documentoId));
		
			actionRequest.getPortletSession().setAttribute("documento", documento, PortletSession.APPLICATION_SCOPE);
			actionRequest.getPortletSession().setAttribute("menu", Scelta.DOCUMENTI_TRASPORTO, PortletSession.APPLICATION_SCOPE);
		
	}
	
	public void trasporto(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException {
			
			System.out.println("*** Inside trasporto ****");
			String documentoId = "";
			if(ParamUtil.getString(actionRequest , "documentoId") != null)
			{ 
				documentoId = ParamUtil.getString(actionRequest , "documentoId"); 
			} 
			else {
				HttpServletRequest documentoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				documentoId = documentoIdReq.getParameter("documentoId");
			} 
			Documento documento = DocumentoLocalServiceUtil.getDocumento(Long.valueOf(documentoId));
		
			actionRequest.getPortletSession().setAttribute("documento", documento, PortletSession.APPLICATION_SCOPE);
			actionRequest.getPortletSession().setAttribute("menu", Scelta.TRASPORTO, PortletSession.APPLICATION_SCOPE);
		
	}
	
	public void salvaDocumentoTrasporto(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException {
		
		System.out.println("*** Inside salvaDocumentoTrasporto ****");
		
		String documentoId = "";
		if(ParamUtil.getString(actionRequest , "documentoId") != null)
		{ 
			documentoId = ParamUtil.getString(actionRequest , "documentoId"); 
		}else {
			HttpServletRequest documentoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			documentoId = documentoIdReq.getParameter("documentoId");
		} 
		String denominazione = "";
		if(ParamUtil.getString(actionRequest , "denominazione") != null)
		{ 
			denominazione = ParamUtil.getString(actionRequest , "denominazione"); 
		}else {
			HttpServletRequest denominazioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			denominazione = denominazioneReq.getParameter("denominazione");
		} 
		String nome = "";
		if(ParamUtil.getString(actionRequest , "nome") != null)
		{ 
			nome = ParamUtil.getString(actionRequest , "nome"); 
		}else {
			HttpServletRequest nomeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nome = nomeReq.getParameter("nome");
		} 
		String cognome = "";
		if(ParamUtil.getString(actionRequest , "cognome") != null)
		{ 
			cognome = ParamUtil.getString(actionRequest , "cognome"); 
		}else {
			HttpServletRequest cognomeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			cognome = cognomeReq.getParameter("cognome");
		} 
		String codFiscale = "";
		if(ParamUtil.getString(actionRequest , "codFiscale") != null)
		{ 
			codFiscale = ParamUtil.getString(actionRequest , "codFiscale"); 
		}else {
			HttpServletRequest codFiscaleReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			codFiscale = codFiscaleReq.getParameter("codFiscale");
		} 
		String titolo = "";
		if(ParamUtil.getString(actionRequest , "titolo") != null)
		{ 
			titolo = ParamUtil.getString(actionRequest , "titolo"); 
		}else {
			HttpServletRequest titoloReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			titolo = titoloReq.getParameter("titolo");
		} 
		String codeori = "";
		if(ParamUtil.getString(actionRequest , "codeori") != null)
		{ 
			codeori = ParamUtil.getString(actionRequest , "codeori"); 
		}else {
			HttpServletRequest codeoriReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			codeori = codeoriReq.getParameter("codeori");
		} 
		String nazioneSO = "";
		if(ParamUtil.getString(actionRequest , "nazioneSO") != null)
		{ 
			nazioneSO = ParamUtil.getString(actionRequest , "nazioneSO"); 
		}else {
			HttpServletRequest nazioneSOReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nazioneSO = nazioneSOReq.getParameter("nazioneSO");
		} 
		String piva = "";
		if(ParamUtil.getString(actionRequest , "piva") != null)
		{ 
			piva = ParamUtil.getString(actionRequest , "piva"); 
		}else {
			HttpServletRequest pivaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			piva = pivaReq.getParameter("piva");
		} 
		String numeroLicenzaGuida = "";
		if(ParamUtil.getString(actionRequest , "numeroLicenzaGuida") != null)
		{ 
			numeroLicenzaGuida = ParamUtil.getString(actionRequest , "numeroLicenzaGuida"); 
		}else {
			HttpServletRequest numeroLicenzaGuidaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			numeroLicenzaGuida = numeroLicenzaGuidaReq.getParameter("numeroLicenzaGuida");
		} 
		String mezzoTrasporto = "";
		if(ParamUtil.getString(actionRequest , "mezzoTrasporto") != null)
		{ 
			mezzoTrasporto = ParamUtil.getString(actionRequest , "mezzoTrasporto"); 
		}else {
			HttpServletRequest mezzoTrasportoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			mezzoTrasporto = mezzoTrasportoReq.getParameter("mezzoTrasporto");
		} 
		String numeroColli = "";
		if(ParamUtil.getString(actionRequest , "numeroColli") != null)
		{ 
			numeroColli = ParamUtil.getString(actionRequest , "numeroColli"); 
		}else {
			HttpServletRequest numeroColliReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			numeroColli = numeroColliReq.getParameter("numeroColli");
		} 
		String descrizione = "";
		if(ParamUtil.getString(actionRequest , "descrizione") != null)
		{ 
			descrizione = ParamUtil.getString(actionRequest , "descrizione"); 
		}else {
			HttpServletRequest descrizioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			descrizione = descrizioneReq.getParameter("descrizione");
		}
		String unitaMisuraPeso = "";
		if(ParamUtil.getString(actionRequest , "unitaMisuraPeso") != null)
		{ 
			unitaMisuraPeso = ParamUtil.getString(actionRequest , "unitaMisuraPeso"); 
		}else {
			HttpServletRequest unitaMisuraPesoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			unitaMisuraPeso = unitaMisuraPesoReq.getParameter("unitaMisuraPeso");
		}
		String pesoLordo = "";
		if(ParamUtil.getString(actionRequest , "pesoLordo") != null)
		{ 
			pesoLordo = ParamUtil.getString(actionRequest , "pesoLordo"); 
		}else {
			HttpServletRequest pesoLordoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			pesoLordo = pesoLordoReq.getParameter("pesoLordo");
		}
		String pesoNetto = "";
		if(ParamUtil.getString(actionRequest , "pesoNetto") != null)
		{ 
			pesoNetto = ParamUtil.getString(actionRequest , "pesoNetto"); 
		}else {
			HttpServletRequest pesoNettoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			pesoNetto = pesoNettoReq.getParameter("pesoNetto");
		}
		String dataOraRitiro = "";
		if(ParamUtil.getString(actionRequest , "dataOraRitiro") != null)
		{ 
			dataOraRitiro = ParamUtil.getString(actionRequest , "dataOraRitiro"); 
		}else {
			HttpServletRequest dataOraRitiroReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			dataOraRitiro = dataOraRitiroReq.getParameter("dataOraRitiro");
		}
		String dataInizioTrasporto = "";
		if(ParamUtil.getString(actionRequest , "dataInizioTrasporto") != null)
		{ 
			dataInizioTrasporto = ParamUtil.getString(actionRequest , "dataInizioTrasporto"); 
		}else {
			HttpServletRequest dataInizioTrasportoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			dataInizioTrasporto = dataInizioTrasportoReq.getParameter("dataInizioTrasporto");
		}
		String dataOraConsegna = "";
		if(ParamUtil.getString(actionRequest , "dataOraConsegna") != null)
		{ 
			dataOraConsegna = ParamUtil.getString(actionRequest , "dataOraConsegna"); 
		}else {
			HttpServletRequest dataOraConsegnaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			dataOraConsegna = dataOraConsegnaReq.getParameter("dataOraConsegna");
		}
		String tipoResa = "";
		if(ParamUtil.getString(actionRequest , "tipoResa") != null)
		{ 
			tipoResa = ParamUtil.getString(actionRequest , "tipoResa"); 
		}else {
			HttpServletRequest tipoResaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			tipoResa = tipoResaReq.getParameter("tipoResa");
		}
		String indirizzo = "";
		if(ParamUtil.getString(actionRequest , "indirizzo") != null)
		{ 
			indirizzo = ParamUtil.getString(actionRequest , "indirizzo"); 
		}else {
			HttpServletRequest indirizzoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			indirizzo = indirizzoReq.getParameter("indirizzo");
		}
		String civico = "";
		if(ParamUtil.getString(actionRequest , "civico") != null)
		{ 
			civico = ParamUtil.getString(actionRequest , "civico"); 
		}else {
			HttpServletRequest civicoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			civico = civicoReq.getParameter("civico");
		}
		String cap = "";
		if(ParamUtil.getString(actionRequest , "cap") != null)
		{ 
			cap = ParamUtil.getString(actionRequest , "cap"); 
		}else {
			HttpServletRequest capReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			cap = capReq.getParameter("cap");
		}
		String comune = "";
		if(ParamUtil.getString(actionRequest , "comune") != null)
		{ 
			comune = ParamUtil.getString(actionRequest , "comune"); 
		}else {
			HttpServletRequest comuneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			comune = comuneReq.getParameter("comune");
		}
		String provincia = "";
		if(ParamUtil.getString(actionRequest , "provincia") != null)
		{ 
			provincia = ParamUtil.getString(actionRequest , "provincia"); 
		}else {
			HttpServletRequest provinciaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			provincia = provinciaReq.getParameter("provincia");
		}
		String nazioneResa = "";
		if(ParamUtil.getString(actionRequest , "nazioneResa") != null)
		{ 
			nazioneResa = ParamUtil.getString(actionRequest , "nazioneResa"); 
		}else {
			HttpServletRequest nazioneResaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nazioneResa = nazioneResaReq.getParameter("nazioneResa");
		}
		
		String datiTrasportoId = "";
		if(ParamUtil.getString(actionRequest , "datiTrasportoId") != null)
		{ 
			datiTrasportoId = ParamUtil.getString(actionRequest , "datiTrasportoId"); 
		}else {
			HttpServletRequest datiTrasportoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			datiTrasportoId = datiTrasportoIdReq.getParameter("datiTrasportoId");
		}
		
		DatiTrasporto datiTrasporto = null;		
		if(!datiTrasportoId.equals("") && datiTrasportoId != null)
		{
			datiTrasporto = DatiTrasportoLocalServiceUtil.getDatiTrasporto(Long.valueOf(datiTrasportoId));
		}else{
			datiTrasporto = DatiTrasportoLocalServiceUtil.createDatiTrasporto(CounterLocalServiceUtil.increment(DatiTrasporto.class.getName()));
		}
		
		datiTrasporto.setDocumentoIDFK(Long.valueOf(documentoId));
		datiTrasporto.setDenominazione(denominazione);
		datiTrasporto.setNome(nome);
		datiTrasporto.setCognome(cognome);
		datiTrasporto.setCodiceFiscale(codFiscale);
		datiTrasporto.setTitolo(titolo);
		datiTrasporto.setCodeori(codeori);
		datiTrasporto.setIdPaese(nazioneSO);
		datiTrasporto.setIdCodice(piva);
		datiTrasporto.setNumeroLicenzaGuida(numeroLicenzaGuida);
		datiTrasporto.setMezzoTrasporto(mezzoTrasporto);
		datiTrasporto.setNumeroColli(numeroColli);
		datiTrasporto.setDescrizione(descrizione);
		datiTrasporto.setUnitaMisuraPeso(unitaMisuraPeso);
		datiTrasporto.setPesoLordo(pesoLordo);
		datiTrasporto.setPesoNetto(pesoNetto);
		datiTrasporto.setDataInizioTrasporto(dataInizioTrasporto);
		datiTrasporto.setDataOraRitiro(dataOraRitiro);
		datiTrasporto.setDataOraConsegna(dataOraConsegna);
		datiTrasporto.setTipoResa(tipoResa);
		datiTrasporto.setIndirizzoResa(indirizzo);
		datiTrasporto.setNumeroCivicoResa(civico);
		datiTrasporto.setCapResa(cap);
		datiTrasporto.setComuneResa(comune);
		datiTrasporto.setProvinciaResa(provincia);
		datiTrasporto.setNazioneResa(nazioneResa);
		
		if(!datiTrasportoId.equals("") && datiTrasportoId != null)
		{
			DatiTrasportoLocalServiceUtil.updateDatiTrasporto(datiTrasporto);
		}else{
			DatiTrasportoLocalServiceUtil.addDatiTrasporto(datiTrasporto);
		}
		
	}
	
	public void aggiungiDatiPagamento(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException, ParseException {
		
			System.out.println("*** Inside aggiungiDatiPagamento ****");

			long documentoId = 0;
			String condizioniPagamento = "";
			String beneficiario = "";
			String modalitaPagamento = "";
			String dataRiferimentoTerminiPagamento = "";
			String giorniTerminiPagamneto = "";
			String dataScadenzaPagamento = "";
			String importoPagamento = "";
			String codUfficioPostale = "";
			String cognomeQuetanziante = "";
			String nomeQuetanziante = "";
			String CFQuetanziante = "";
			String istitutoFinanziario = "";
			String iban = "";
			String abi = "";
			String cab = "";
			String bic = "";
			String scontoPagamentoAnticipato = "";
			String dataLimitePagamentoAnticipato = "";
			String penalitaPagamentiRitardati = "";
			String dataPenaleRitardo = "";
			String codicePagamento = "";
			String action = "";
			if(ParamUtil.getString(actionRequest , "action") != null)
			{ 
				action = ParamUtil.getString(actionRequest , "action"); 
			} 
			else {
				HttpServletRequest actionReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				action = actionReq.getParameter("action");
			} 
			if(ParamUtil.getString(actionRequest , "documentoId") != null)
			{ 
				documentoId = Long.valueOf(ParamUtil.getString(actionRequest , "documentoId")); 
			} 
			else {
				HttpServletRequest documentoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				documentoId = Long.valueOf(documentoIdReq.getParameter("documentoId"));
			} 
			if(ParamUtil.getString(actionRequest , "condizioniPagamento") != null)
			{
				condizioniPagamento = ParamUtil.getString(actionRequest , "condizioniPagamento");
			}else{
				HttpServletRequest condizioniPagamentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				condizioniPagamento = condizioniPagamentoReq.getParameter("condizioniPagamento");
			}
			if(ParamUtil.getString(actionRequest , "beneficiario") != null)
			{
				beneficiario = ParamUtil.getString(actionRequest , "beneficiario");
			}else{
				HttpServletRequest beneficiarioReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				beneficiario = beneficiarioReq.getParameter("beneficiario");
			}
			if(ParamUtil.getString(actionRequest , "modalitaPagamento") != null)
			{
				modalitaPagamento = ParamUtil.getString(actionRequest , "modalitaPagamento");
			}else{
				HttpServletRequest modalitaPagamentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				modalitaPagamento = modalitaPagamentoReq.getParameter("modalitaPagamento");
			}	
			if(ParamUtil.getString(actionRequest , "dataRiferimentoTerminiPagamento") != null)
			{
				dataRiferimentoTerminiPagamento = ParamUtil.getString(actionRequest , "dataRiferimentoTerminiPagamento");
			}else{
				HttpServletRequest dataRiferimentoTerminiPagamentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataRiferimentoTerminiPagamento = dataRiferimentoTerminiPagamentoReq.getParameter("dataRiferimentoTerminiPagamento");
			}
			if(ParamUtil.getString(actionRequest , "giorniTerminiPagamneto") != null)
			{
				giorniTerminiPagamneto = ParamUtil.getString(actionRequest , "giorniTerminiPagamneto");
			}else{
				HttpServletRequest giorniTerminiPagamnetoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				giorniTerminiPagamneto = giorniTerminiPagamnetoReq.getParameter("giorniTerminiPagamneto");
			}
			if(ParamUtil.getString(actionRequest , "dataScadenzaPagamento") != null)
			{
				dataScadenzaPagamento = ParamUtil.getString(actionRequest , "dataScadenzaPagamento");
			}else{
				HttpServletRequest dataScadenzaPagamentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataScadenzaPagamento = dataScadenzaPagamentoReq.getParameter("dataScadenzaPagamento");
			}
			if(ParamUtil.getString(actionRequest , "importoPagamento") != null)
			{
				importoPagamento = ParamUtil.getString(actionRequest , "importoPagamento");
			}else{
				HttpServletRequest importoPagamentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				importoPagamento = importoPagamentoReq.getParameter("importoPagamento");
			}
			if(ParamUtil.getString(actionRequest , "codUfficioPostale") != null)
			{
				codUfficioPostale = ParamUtil.getString(actionRequest , "codUfficioPostale");
			}else{
				HttpServletRequest codUfficioPostaleReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codUfficioPostale = codUfficioPostaleReq.getParameter("codUfficioPostale");
			}
			if(ParamUtil.getString(actionRequest , "cognomeQuetanziante") != null)
			{
				cognomeQuetanziante = ParamUtil.getString(actionRequest , "cognomeQuetanziante");
			}else{
				HttpServletRequest cognomeQuetanzianteReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				cognomeQuetanziante = cognomeQuetanzianteReq.getParameter("cognomeQuetanziante");
			}
			if(ParamUtil.getString(actionRequest , "nomeQuetanziante") != null)
			{
				nomeQuetanziante = ParamUtil.getString(actionRequest , "nomeQuetanziante");
			}else{
				HttpServletRequest nomeQuetanzianteReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				nomeQuetanziante = nomeQuetanzianteReq.getParameter("nomeQuetanziante");
			}
			if(ParamUtil.getString(actionRequest , "CFQuetanziante") != null)
			{
				CFQuetanziante = ParamUtil.getString(actionRequest , "CFQuetanziante");
			}else{
				HttpServletRequest CFQuetanzianteReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				CFQuetanziante = CFQuetanzianteReq.getParameter("CFQuetanziante");
			}
			if(ParamUtil.getString(actionRequest , "istitutoFinanziario") != null)
			{
				istitutoFinanziario = ParamUtil.getString(actionRequest , "istitutoFinanziario");
			}else{
				HttpServletRequest istitutoFinanziarioReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				istitutoFinanziario = istitutoFinanziarioReq.getParameter("istitutoFinanziario");
			}
			if(ParamUtil.getString(actionRequest , "iban") != null)
			{
				iban = ParamUtil.getString(actionRequest , "iban");
			}else{
				HttpServletRequest ibanReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				iban = ibanReq.getParameter("iban");
			}
			if(ParamUtil.getString(actionRequest , "abi") != null)
			{
				abi = ParamUtil.getString(actionRequest , "abi");
			}else{
				HttpServletRequest abiReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				abi = abiReq.getParameter("abi");
			}
			if(ParamUtil.getString(actionRequest , "cab") != null)
			{
				cab = ParamUtil.getString(actionRequest , "cab");
			}else{
				HttpServletRequest cabReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				cab = cabReq.getParameter("cab");
			}
			if(ParamUtil.getString(actionRequest , "bic") != null)
			{
				bic = ParamUtil.getString(actionRequest , "bic");
			}else{
				HttpServletRequest bicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				bic = bicReq.getParameter("bic");
			}
			if(ParamUtil.getString(actionRequest , "scontoPagamentoAnticipato") != null)
			{
				scontoPagamentoAnticipato = ParamUtil.getString(actionRequest , "scontoPagamentoAnticipato");
			}else{
				HttpServletRequest scontoPagamentoAnticipatoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				scontoPagamentoAnticipato = scontoPagamentoAnticipatoReq.getParameter("scontoPagamentoAnticipato");
			}
			if(ParamUtil.getString(actionRequest , "dataLimitePagamentoAnticipato") != null)
			{
				dataLimitePagamentoAnticipato = ParamUtil.getString(actionRequest , "dataLimitePagamentoAnticipato");
			}else{
				HttpServletRequest dataLimitePagamentoAnticipatoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataLimitePagamentoAnticipato = dataLimitePagamentoAnticipatoReq.getParameter("dataLimitePagamentoAnticipato");
			}
			if(ParamUtil.getString(actionRequest , "penalitaPagamentiRitardati") != null)
			{
				penalitaPagamentiRitardati = ParamUtil.getString(actionRequest , "penalitaPagamentiRitardati");
			}else{
				HttpServletRequest penalitaPagamentiRitardatiReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				penalitaPagamentiRitardati = penalitaPagamentiRitardatiReq.getParameter("penalitaPagamentiRitardati");

			}
			if(ParamUtil.getString(actionRequest , "dataPenaleRitardo") != null)
			{
				dataPenaleRitardo = ParamUtil.getString(actionRequest , "dataPenaleRitardo");
			}else{
				HttpServletRequest dataPenaleRitardoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataPenaleRitardo = dataPenaleRitardoReq.getParameter("dataPenaleRitardo");
			}			
			if(ParamUtil.getString(actionRequest , "codicePagamento") != null)
			{
				codicePagamento = ParamUtil.getString(actionRequest , "codicePagamento");
			}else{
				HttpServletRequest codicePagamentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codicePagamento = codicePagamentoReq.getParameter("codicePagamento");
			}	
			Pagamenti pagamento = null;
			if(action.equals("ADD"))
			{
				pagamento = PagamentiLocalServiceUtil.createPagamenti(CounterLocalServiceUtil.increment(Pagamenti.class.getName()));
			}else if(action.equals("UPDATE"))
			{
				pagamento = PagamentiLocalServiceUtil.getPagamento(documentoId);
			}
			pagamento.setDocumentoIDFK(Long.valueOf(documentoId));
			pagamento.setCondizioniPagamento(condizioniPagamento);
			pagamento.setBeneficiario(beneficiario.toUpperCase());
			pagamento.setModalitaPagamento(modalitaPagamento);
			pagamento.setDataTermine(dataRiferimentoTerminiPagamento);
			pagamento.setDataTermineGiorni(giorniTerminiPagamneto);
			pagamento.setDataScadenzaPagamento(dataScadenzaPagamento);
			pagamento.setCodUfficioPostale(codUfficioPostale);
			pagamento.setCognomeQuet(cognomeQuetanziante.toUpperCase());
			pagamento.setNomeQuet(nomeQuetanziante.toUpperCase());
			pagamento.setCfQuet(CFQuetanziante);
			pagamento.setIstitutoFinanziario(istitutoFinanziario.toUpperCase());
			pagamento.setIban(iban.replace(" ", ""));
			pagamento.setAbi(abi.replace(" ", ""));
			pagamento.setCab(cab.replace(" ", ""));
			pagamento.setBic(bic.replace(" ", ""));
			pagamento.setScontoPagamentoAnticipato(scontoPagamentoAnticipato);
			pagamento.setDataPagamentoAnticipato(dataLimitePagamentoAnticipato);
			pagamento.setPenaleRitardo(dataPenaleRitardo);
			pagamento.setCodicePagamento(codicePagamento);
			if(action.equals("ADD"))
			{
				PagamentiLocalServiceUtil.addPagamenti(pagamento);
			}else if(action.equals("UPDATE"))
			{
				PagamentiLocalServiceUtil.updatePagamenti(pagamento);
			}
	}
	
	public void aggiungiLineaFattura(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException, ParseException {
		
			System.out.println("*** Inside aggiungiLineaFattura ****");
			
			String numeroLinea = "";
			if(ParamUtil.getString(actionRequest , "numeroLinea") != null)
			{
				numeroLinea = ParamUtil.getString(actionRequest , "numeroLinea");
			}else{
				HttpServletRequest numeroLineaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				numeroLinea = numeroLineaReq.getParameter("numeroLinea");
			}
			String descrizione = "";
			if(ParamUtil.getString(actionRequest , "descrizione") != null)
			{
				descrizione = ParamUtil.getString(actionRequest , "descrizione");
			}else{
				HttpServletRequest descrizioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				descrizione = descrizioneReq.getParameter("descrizione");
			}
			String dataInizioServizio = "";
			if(ParamUtil.getString(actionRequest , "dataInizioServizio") != null)
			{
				dataInizioServizio = ParamUtil.getString(actionRequest , "dataInizioServizio");
			}else{
				HttpServletRequest dataInizioServizioReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataInizioServizio = dataInizioServizioReq.getParameter("dataInizioServizio");
			}
			String dataFineServizio = "";
			if(ParamUtil.getString(actionRequest , "dataFineServizio") != null)
			{
				dataFineServizio = ParamUtil.getString(actionRequest , "dataFineServizio");
			}else{
				HttpServletRequest dataFineServizioReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataFineServizio = dataFineServizioReq.getParameter("dataFineServizio");
			}
			String quantita = "";
			if(ParamUtil.getString(actionRequest , "quantita") != null)
			{
				quantita = ParamUtil.getString(actionRequest , "quantita");
			}else{
				HttpServletRequest quantitaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				quantita = quantitaReq.getParameter("quantita");
			}
			String prezzoUnitario = "";
			if(ParamUtil.getString(actionRequest , "prezzoUnitario") != null)
			{
				prezzoUnitario = ParamUtil.getString(actionRequest , "prezzoUnitario");
			}else{
				HttpServletRequest prezzoUnitarioReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				prezzoUnitario = prezzoUnitarioReq.getParameter("prezzoUnitario");
			}
			String prezzoTotale = "";
			if(ParamUtil.getString(actionRequest , "prezzoTotale") != null)
			{
				prezzoTotale = ParamUtil.getString(actionRequest , "prezzoTotale");
			}else{
				HttpServletRequest prezzoTotaleReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				prezzoTotale = prezzoTotaleReq.getParameter("prezzoTotale");
			}
			String aliquotaIva = "";
			if(ParamUtil.getString(actionRequest , "aliquotaIva") != null)
			{
				aliquotaIva = ParamUtil.getString(actionRequest , "aliquotaIva");
			}else{
				HttpServletRequest aliquotaIvaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				aliquotaIva = aliquotaIvaReq.getParameter("aliquotaIva");
			}
			String tipoCessionePrestazione = "";
			if(ParamUtil.getString(actionRequest , "tipoCessionePrestazione") != null)
			{
				tipoCessionePrestazione = ParamUtil.getString(actionRequest , "tipoCessionePrestazionev");
			}else{
				HttpServletRequest tipoCessionePrestazioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				tipoCessionePrestazione = tipoCessionePrestazioneReq.getParameter("tipoCessionePrestazione");
			}
			String ritenuta = "";
			if(ParamUtil.getString(actionRequest , "ritenuta") != null)
			{
				ritenuta = ParamUtil.getString(actionRequest , "ritenuta");
			}else{
				HttpServletRequest ritenutaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				ritenuta = ritenutaReq.getParameter("ritenuta");
			}
			String natura = "";
			if(ParamUtil.getString(actionRequest , "natura") != null)
			{
				natura = ParamUtil.getString(actionRequest , "natura");
			}else{
				HttpServletRequest naturaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				natura = naturaReq.getParameter("natura");
			}
			String riferimentoAmministrazione = "";
			if(ParamUtil.getString(actionRequest , "riferimentoAmministrazione") != null)
			{
				riferimentoAmministrazione = ParamUtil.getString(actionRequest , "riferimentoAmministrazione");
			}else{
				HttpServletRequest riferimentoAmministrazioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				riferimentoAmministrazione = riferimentoAmministrazioneReq.getParameter("riferimentoAmministrazione");
			}
			String documentoId = "";
			if(ParamUtil.getString(actionRequest , "documentoId") != null)
			{
				documentoId = ParamUtil.getString(actionRequest , "documentoId");
			}else{
				HttpServletRequest documentoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				documentoId = documentoIdReq.getParameter("documentoId");
			}			
			String scelta = "";
			if(ParamUtil.getString(actionRequest , "scelta") != null)
			{
				scelta = ParamUtil.getString(actionRequest , "scelta");
			}else{
				HttpServletRequest sceltaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				scelta = sceltaReq.getParameter("scelta");
			}
			String action = "";
			if(ParamUtil.getString(actionRequest , "action") != null)
			{
				action = ParamUtil.getString(actionRequest , "action");
			}else{
				HttpServletRequest actionReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				action = actionReq.getParameter("action");
			}
			String lineaFatturaId = "";
			if(ParamUtil.getString(actionRequest , "lineaFatturaId") != null)
			{
				lineaFatturaId = ParamUtil.getString(actionRequest , "lineaFatturaId");
			}else{
				HttpServletRequest lineaFatturaIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				lineaFatturaId = lineaFatturaIdReq.getParameter("lineaFatturaId");
			}
			String idDocumentoOrdine = "";
			if(ParamUtil.getString(actionRequest , "idDocumentoOrdine") != null)
			{
				idDocumentoOrdine = ParamUtil.getString(actionRequest , "idDocumentoOrdine");
			}else{
				HttpServletRequest idDocumentoOrdineReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				idDocumentoOrdine = idDocumentoOrdineReq.getParameter("idDocumentoOrdine");
			}
			String dataOrdine = "";
			if(ParamUtil.getString(actionRequest , "dataOrdine") != null)
			{
				dataOrdine = ParamUtil.getString(actionRequest , "dataOrdine");
			}else{
				HttpServletRequest dataOrdineReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataOrdine = dataOrdineReq.getParameter("dataOrdine");
			}
			String codiceCigOrdine = "";
			if(ParamUtil.getString(actionRequest , "codiceCigOrdine") != null)
			{
				codiceCigOrdine = ParamUtil.getString(actionRequest , "codiceCigOrdine");
			}else{
				HttpServletRequest codiceCigOrdineReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codiceCigOrdine = codiceCigOrdineReq.getParameter("codiceCigOrdine");
			}
			String codiceCupOrdine = "";
			if(ParamUtil.getString(actionRequest , "codiceCupOrdine") != null)
			{
				codiceCupOrdine = ParamUtil.getString(actionRequest , "codiceCupOrdine");
			}else{
				HttpServletRequest codiceCupOrdineReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codiceCupOrdine = codiceCupOrdineReq.getParameter("codiceCupOrdine");
			}
			String idDocumentoContratto = "";
			if(ParamUtil.getString(actionRequest , "idDocumentoContratto") != null)
			{
				idDocumentoContratto = ParamUtil.getString(actionRequest , "idDocumentoContratto");
			}else{
				HttpServletRequest idDocumentoContrattoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				idDocumentoContratto = idDocumentoContrattoReq.getParameter("idDocumentoContratto");
			}
			String dataContratto = "";
			if(ParamUtil.getString(actionRequest , "dataContratto") != null)
			{
				dataContratto = ParamUtil.getString(actionRequest , "dataContratto");
			}else{
				HttpServletRequest dataContrattoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataContratto = dataContrattoReq.getParameter("dataContratto");
			}
			String codiceCigContratto = "";
			if(ParamUtil.getString(actionRequest , "codiceCigContratto") != null)
			{
				codiceCigContratto = ParamUtil.getString(actionRequest , "codiceCigContratto");
			}else{
				HttpServletRequest codiceCigContrattoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codiceCigContratto = codiceCigContrattoReq.getParameter("codiceCigContratto");
			}
			String codiceCupContratto = "";
			if(ParamUtil.getString(actionRequest , "codiceCupContratto") != null)
			{
				codiceCupContratto = ParamUtil.getString(actionRequest , "codiceCupContratto");
			}else{
				HttpServletRequest codiceCupContrattoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codiceCupContratto = codiceCupContrattoReq.getParameter("codiceCupContratto");
			}
			String idDocumentoConvenzione = "";
			if(ParamUtil.getString(actionRequest , "idDocumentoConvenzione") != null)
			{
				idDocumentoConvenzione = ParamUtil.getString(actionRequest , "idDocumentoConvenzione");
			}else{
				HttpServletRequest idDocumentoConvenzioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				idDocumentoConvenzione = idDocumentoConvenzioneReq.getParameter("idDocumentoConvenzione");
			}
			String dataConvenzione = "";
			if(ParamUtil.getString(actionRequest , "dataConvenzione") != null)
			{
				dataConvenzione = ParamUtil.getString(actionRequest , "dataConvenzione");
			}else{
				HttpServletRequest dataConvenzioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataConvenzione = dataConvenzioneReq.getParameter("dataConvenzione");
			}
			String codiceCigConvenzione = "";
			if(ParamUtil.getString(actionRequest , "codiceCigConvenzione") != null)
			{
				codiceCigConvenzione = ParamUtil.getString(actionRequest , "codiceCigConvenzione");
			}else{
				HttpServletRequest codiceCigConvenzioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codiceCigConvenzione = codiceCigConvenzioneReq.getParameter("codiceCigConvenzione");
			}
			String codiceCupConvenzione = "";
			if(ParamUtil.getString(actionRequest , "codiceCupConvenzione") != null)
			{
				codiceCupConvenzione = ParamUtil.getString(actionRequest , "codiceCupConvenzione");
			}else{
				HttpServletRequest codiceCupConvenzioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codiceCupConvenzione = codiceCupConvenzioneReq.getParameter("codiceCupConvenzione");
			}
			String idDocumentoRicezione = "";
			if(ParamUtil.getString(actionRequest , "idDocumentoRicezione") != null)
			{
				idDocumentoRicezione = ParamUtil.getString(actionRequest , "idDocumentoRicezione");
			}else{
				HttpServletRequest idDocumentoRicezioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				idDocumentoRicezione = idDocumentoRicezioneReq.getParameter("idDocumentoRicezione");
			}
			String dataRicezione = "";
			if(ParamUtil.getString(actionRequest , "dataRicezione") != null)
			{
				dataRicezione = ParamUtil.getString(actionRequest , "dataRicezione");
			}else{
				HttpServletRequest dataRicezioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataRicezione = dataRicezioneReq.getParameter("dataRicezione");
			}
			String codiceCigRicezione = "";
			if(ParamUtil.getString(actionRequest , "codiceCigRicezione") != null)
			{
				codiceCigRicezione = ParamUtil.getString(actionRequest , "codiceCigRicezione");
			}else{
				HttpServletRequest codiceCigRicezioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codiceCigRicezione = codiceCigRicezioneReq.getParameter("codiceCigRicezione");
			}
			String codiceCupRicezione = "";
			if(ParamUtil.getString(actionRequest , "codiceCupRicezione") != null)
			{
				codiceCupRicezione = ParamUtil.getString(actionRequest , "codiceCupRicezione");
			}else{
				HttpServletRequest codiceCupRicezioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				codiceCupRicezione = codiceCupRicezioneReq.getParameter("codiceCupRicezione");
			}
			
			String numeroDdt = "";
			if(ParamUtil.getString(actionRequest , "numeroDdt") != null)
			{
				numeroDdt = ParamUtil.getString(actionRequest , "numeroDdt");
			}else{
				HttpServletRequest numeroDdtReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				numeroDdt = numeroDdtReq.getParameter("numeroDdt");
			}
			String dataDdt = "";
			if(ParamUtil.getString(actionRequest , "dataDdt") != null)
			{
				dataDdt = ParamUtil.getString(actionRequest , "dataDdt");
			}else{
				HttpServletRequest dataDdtReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				dataDdt = dataDdtReq.getParameter("dataDdt");
			}
			
			LineaFattura lineaFattura = null;		
			if(action.equals("UPDATE")){
				lineaFattura = LineaFatturaLocalServiceUtil.getLineaFattura(Long.valueOf(lineaFatturaId));
			}else if(action.equals("ADD")){
				lineaFattura = LineaFatturaLocalServiceUtil.createLineaFattura(CounterLocalServiceUtil.increment(LineaFattura.class.getName()));
			}
			
			lineaFattura.setDocumentoIDFK(Long.valueOf(documentoId));
			lineaFattura.setNumeroLinea(numeroLinea);
			lineaFattura.setDescrizione(descrizione);
			lineaFattura.setDataInizio(dataInizioServizio);
			lineaFattura.setDataFine(dataFineServizio);
			lineaFattura.setQuantita(quantita);
			lineaFattura.setPrezzoUnitario(prezzoUnitario);
			
			double pt = Integer.valueOf(quantita) * Double.valueOf(prezzoUnitario); 
			lineaFattura.setPrezzoTotale(decimalFormat.format(pt));
			
			lineaFattura.setAliquotaIvaLinea(aliquotaIva);
			lineaFattura.setTipoPrestazione(tipoCessionePrestazione);
			lineaFattura.setRitenuta(ritenuta);
			lineaFattura.setNatura(natura);
			lineaFattura.setRiferimentoAmministrativo(riferimentoAmministrazione);
			
			lineaFattura.setIdDocumentoOrdine(idDocumentoOrdine);
			lineaFattura.setDataOrdine(dataOrdine);
			lineaFattura.setCodiceCigOrdine(codiceCigOrdine);
			lineaFattura.setCodiceCupOrdine(codiceCupOrdine);
			
			lineaFattura.setIdDocumentoContratto(idDocumentoContratto);
			lineaFattura.setDataContratto(dataContratto);
			lineaFattura.setCodiceCigContratto(codiceCigContratto);
			lineaFattura.setCodiceCupContratto(codiceCupContratto);
			
			lineaFattura.setIdDocumentoConvenzione(idDocumentoConvenzione);
			lineaFattura.setDataConvenzione(dataConvenzione);
			lineaFattura.setCodiceCigConvenzione(codiceCigConvenzione);
			lineaFattura.setCodiceCupConvenzione(codiceCupConvenzione);
			
			lineaFattura.setIdDocumentoRicezione(idDocumentoRicezione);
			lineaFattura.setDataRicezione(dataRicezione);
			lineaFattura.setCodiceCigRicezione(codiceCigRicezione);
			lineaFattura.setCodiceCupRicezione(codiceCupRicezione);			
			
			lineaFattura.setNumeroDdt(numeroDdt);
			lineaFattura.setDataDdt(dataDdt);
			
			if(action.equals("UPDATE")){
				LineaFatturaLocalServiceUtil.updateLineaFattura(lineaFattura);
				actionRequest.getPortletSession().setAttribute("documentoId", documentoId, PortletSession.APPLICATION_SCOPE);
				actionRequest.getPortletSession().setAttribute("menu", Scelta.MODIFICA_DOCUMENTO, PortletSession.APPLICATION_SCOPE);
			}else if(action.equals("ADD")){
				actionRequest.getPortletSession().setAttribute("documentoId", documentoId, PortletSession.APPLICATION_SCOPE);
				actionRequest.getPortletSession().setAttribute("menu", Scelta.MODIFICA_DOCUMENTO, PortletSession.APPLICATION_SCOPE);
				LineaFatturaLocalServiceUtil.addLineaFattura(lineaFattura);
			}
	}
	
	public void nuovoDocumento(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException, ParseException {
		
			System.out.println("*** Inside nuovoDocumento ****");
			List<Trasmittente> list_trasmittente = TrasmittenteLocalServiceUtil.getTrasmittentes(0, 1);
			ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
		long riceventeIdFK = 0;
		long trasmittenteIdFK = list_trasmittente.get(0).getTrasmittenteId();
		
		if(ParamUtil.getLong(actionRequest , "riceventeIdFK") != 0)
		{
			riceventeIdFK = ParamUtil.getLong(actionRequest , "riceventeIdFK");
		}else{
			HttpServletRequest riceventeIdFKReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			riceventeIdFK = Long.valueOf(riceventeIdFKReq.getParameter("riceventeIdFK"));
		}	
		String tipoFattura = "";
		if(ParamUtil.getString(actionRequest , "tipoFattura") != null)
		{
			tipoFattura = ParamUtil.getString(actionRequest , "tipoFattura");
		}else{
			HttpServletRequest tipoFatturaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			tipoFattura = tipoFatturaReq.getParameter("tipoFattura");
		}
		String dataFattura = "";
		if(ParamUtil.getString(actionRequest , "dataFattura") != null)
		{
			dataFattura = ParamUtil.getString(actionRequest , "dataFattura");
		}else{
			HttpServletRequest dataFatturaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			dataFattura = dataFatturaReq.getParameter("dataFattura");
		}		
		String numDocumento = "";
		if(ParamUtil.getString(actionRequest , "numDocumento") != null)
		{
			numDocumento = ParamUtil.getString(actionRequest , "numDocumento");
		}else{
			HttpServletRequest numDocumentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			numDocumento = numDocumentoReq.getParameter("numDocumento");
		}
		String progressivoInvio = "";
		if(ParamUtil.getString(actionRequest , "progressivoInvio") != null)
		{
			progressivoInvio = ParamUtil.getString(actionRequest , "progressivoInvio");
		}else{
			HttpServletRequest progressivoInvioReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			progressivoInvio = progressivoInvioReq.getParameter("progressivoInvio");
		}	
		String tipoRitenuta = "";
		if(ParamUtil.getString(actionRequest , "tipoRitenuta") != null)
		{
			tipoRitenuta = ParamUtil.getString(actionRequest , "tipoRitenuta");
		}else{
			HttpServletRequest tipoRitenutaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			tipoRitenuta = tipoRitenutaReq.getParameter("tipoRitenuta");
		}
		String importoRitenuta = "";
		if(ParamUtil.getString(actionRequest , "importoRitenuta") != null)
		{
			importoRitenuta = ParamUtil.getString(actionRequest , "importoRitenuta");
		}else{
			HttpServletRequest importoRitenutaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			importoRitenuta = importoRitenutaReq.getParameter("importoRitenuta");
		}		
		String aliquotaRitenuta = "";
		if(ParamUtil.getString(actionRequest , "aliquotaRitenuta") != null)
		{
			aliquotaRitenuta = ParamUtil.getString(actionRequest , "aliquotaRitenuta");
		}else{
			HttpServletRequest aliquotaRitenutaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			aliquotaRitenuta = aliquotaRitenutaReq.getParameter("aliquotaRitenuta");
		}	
		String causalePagamento = "";
		if(ParamUtil.getString(actionRequest , "causalePagamento") != null)
		{
			causalePagamento = ParamUtil.getString(actionRequest , "causalePagamento");
		}else{
			HttpServletRequest causalePagamentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			causalePagamento = causalePagamentoReq.getParameter("causalePagamento");
		}		
		String importoTotaleDocumento = "";
		if(ParamUtil.getString(actionRequest , "importoTotaleDocumento") != null)
		{
			importoTotaleDocumento = ParamUtil.getString(actionRequest , "importoTotaleDocumento");
		}else{
			HttpServletRequest importoTotaleDocumentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			importoTotaleDocumento = importoTotaleDocumentoReq.getParameter("importoTotaleDocumento");
		}
		String arrotondamento = "";
		if(ParamUtil.getString(actionRequest , "arrotondamento") != null)
		{
			arrotondamento = ParamUtil.getString(actionRequest , "arrotondamento");
		}else{
			HttpServletRequest arrotondamentoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			arrotondamento = arrotondamentoReq.getParameter("arrotondamento");
		}
		String causale = "";
		if(ParamUtil.getString(actionRequest , "causale") != null)
		{
			causale = ParamUtil.getString(actionRequest , "causale");
		}else{
			HttpServletRequest causaleReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			causale = causaleReq.getParameter("causale");
		}		
		String art73 = "";
		if(ParamUtil.getString(actionRequest , "art73") != null)
		{
			art73 = ParamUtil.getString(actionRequest , "art73");
		}else{
			HttpServletRequest art73Req = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			art73 = art73Req.getParameter("art73");
		}			
		String bolloVirtuale = "";
		if(ParamUtil.getString(actionRequest , "bolloVirtuale") != null)
		{
			bolloVirtuale = ParamUtil.getString(actionRequest , "bolloVirtuale");
		}else{
			HttpServletRequest bolloVirtualeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			bolloVirtuale = bolloVirtualeReq.getParameter("bolloVirtuale");
		}			
		String importoBollo = "";
		if(ParamUtil.getString(actionRequest , "importoBollo") != null)
		{
			importoBollo = ParamUtil.getString(actionRequest , "importoBollo");
		}else{
			HttpServletRequest importoBolloReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			importoBollo = importoBolloReq.getParameter("importoBollo");
		}		
		String tipoCassaPrevidenziale = "";
		if(ParamUtil.getString(actionRequest , "tipoCassaPrevidenziale") != null)
		{
			tipoCassaPrevidenziale = ParamUtil.getString(actionRequest , "tipoCassaPrevidenziale");
		}else{
			HttpServletRequest tipoCassaPrevidenzialeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			tipoCassaPrevidenziale = tipoCassaPrevidenzialeReq.getParameter("tipoCassaPrevidenziale");
		}
		String alCassa = "";
		if(ParamUtil.getString(actionRequest , "alCassa") != null)
		{
			alCassa = ParamUtil.getString(actionRequest , "alCassa");
		}else{
			HttpServletRequest alCassaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			alCassa = alCassaReq.getParameter("alCassa");
		}
		String aliquotaIvaCassa = "";
		if(ParamUtil.getString(actionRequest , "aliquotaIvaCassa") != null)
		{
			aliquotaIvaCassa = ParamUtil.getString(actionRequest , "aliquotaIvaCassa");
		}else{
			HttpServletRequest aliquotaIvaCassaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			aliquotaIvaCassa = aliquotaIvaCassaReq.getParameter("aliquotaIvaCassa");
		}	
		String imponibileCassa = "";
		if(ParamUtil.getString(actionRequest , "imponibileCassa") != null)
		{
			imponibileCassa = ParamUtil.getString(actionRequest , "imponibileCassa");
		}else{
			HttpServletRequest imponibileCassaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			imponibileCassa = imponibileCassaReq.getParameter("imponibileCassa");
		}
		String ritenutaCassa = "";
		if(ParamUtil.getString(actionRequest , "ritenutaCassa") != null)
		{
			ritenutaCassa = ParamUtil.getString(actionRequest , "ritenutaCassa");
		}else{
			HttpServletRequest ritenutaCassaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			ritenutaCassa = ritenutaCassaReq.getParameter("ritenutaCassa");
		}
		String naturaCassa = "";
		if(ParamUtil.getString(actionRequest , "naturaCassa") != null)
		{
			naturaCassa = ParamUtil.getString(actionRequest , "naturaCassa");
		}else{
			HttpServletRequest naturaCassaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			naturaCassa = naturaCassaReq.getParameter("naturaCassa");
		}
		String scelta = "";
		if(ParamUtil.getString(actionRequest , "scelta") != null)
		{
			scelta = ParamUtil.getString(actionRequest , "scelta");
		}else{
			HttpServletRequest sceltaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			scelta = sceltaReq.getParameter("scelta");	
		}
		String documentoId = "";
		if(ParamUtil.getString(actionRequest , "documentoId") != null)
		{
			documentoId = ParamUtil.getString(actionRequest , "documentoId");
		}else{
			HttpServletRequest documentoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			documentoId = documentoIdReq.getParameter("documentoId");
		}		
		String esigibilitaIva = "";
		if(ParamUtil.getString(actionRequest , "esigibilitaIva") != null)
		{
			esigibilitaIva = ParamUtil.getString(actionRequest , "esigibilitaIva");
		}else{
			HttpServletRequest esigibilitaIvaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			esigibilitaIva = esigibilitaIvaReq.getParameter("esigibilitaIva");
		}
		
		Documento documento = null;
		
		if(scelta.equals("SALVA_DOC_BOZZA") || scelta.equals("SALVA_DOC_BOZZA_AGGIUNGI_COMPETENZA"))
		{
			documento = DocumentoLocalServiceUtil.getDocumento(Long.valueOf(documentoId));
		}
		if(scelta.equals("SALVA_DOC_NUOVO") || ( scelta.equals("SALVA_DOC_NUOVO") && scelta.equals("SALVA_DOC_BOZZA_AGGIUNGI_COMPETENZA"))) {
			documento = DocumentoLocalServiceUtil.createDocumento(CounterLocalServiceUtil.increment(Documento.class.getName()));
		}
		
		documento.setTrasmittenteIDFK(trasmittenteIdFK);
		documento.setRiceventeIDFK(riceventeIdFK);
		String nomeDocumento = list_trasmittente.get(0).getNazione()+list_trasmittente.get(0).getCodiceFiscale()+"_"+numDocumento+".xml";
		documento.setNomeDocumento(nomeDocumento);
		documento.setUserId(themeDisplay.getUserId());
		documento.setTipoDocumento(tipoFattura);
		documento.setStatoDocumento("BOZZA");
		documento.setDivisa("EUR");
		documento.setDataDocumento(dataFattura);
		documento.setNumeroDocumento(numDocumento);
		if(progressivoInvio.equals("")){
			documento.setProgressivoInvio("1");
		}else{
			documento.setProgressivoInvio(progressivoInvio);	
		}
		documento.setTipoRitenuta(tipoRitenuta);
		documento.setAliquotaRitenuta(aliquotaRitenuta.replaceAll(",","."));
		documento.setCausalePagamento(causalePagamento);
		documento.setArrotondamento(arrotondamento);
		documento.setCausale(causale);
		documento.setArticolo73(art73);
		documento.setBolloVirtuale(bolloVirtuale);
		documento.setImportoBolloVirtuale(importoBollo.replaceAll(",","."));
		documento.setCassaPrevidenziale(tipoCassaPrevidenziale);
		documento.setAliquotaCassa(alCassa.replaceAll(",","."));
		
		if(aliquotaIvaCassa.equals(""))
			documento.setAliquotaIvaCassa("0");
		else
			documento.setAliquotaIvaCassa(aliquotaIvaCassa.replaceAll(",","."));
		
		documento.setRitenutaCassa(ritenutaCassa);
		documento.setNaturaCassa(naturaCassa);
		documento.setEsigibilitaIva(esigibilitaIva);
		
		if(scelta.equals("SALVA_DOC_BOZZA")) { DocumentoLocalServiceUtil.updateDocumento(documento);  }
		if(scelta.equals("SALVA_DOC_NUOVO")) { DocumentoLocalServiceUtil.addDocumento(documento); }
		
		
		if( scelta.equals("SALVA_DOC_BOZZA_AGGIUNGI_COMPETENZA") ){
			DocumentoLocalServiceUtil.updateDocumento(documento);
			actionRequest.getPortletSession().setAttribute("documento", documento, PortletSession.APPLICATION_SCOPE);
			actionRequest.getPortletSession().setAttribute("menu", Scelta.AGGIUNGI_COMPETENZA, PortletSession.APPLICATION_SCOPE);
		}		
		
		if(scelta.equals("SALVA_DOC_NUOVO_AGGIUNGI_COMPETENZA")){
			DocumentoLocalServiceUtil.addDocumento(documento);
			actionRequest.getPortletSession().setAttribute("documento", documento, PortletSession.APPLICATION_SCOPE);
			actionRequest.getPortletSession().setAttribute("menu", Scelta.AGGIUNGI_COMPETENZA, PortletSession.APPLICATION_SCOPE);
		}
		
	}
	
	public void salvaTrasmittente(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException {
		
		System.out.println("*** Inside salvaTrasmittente ****");
		String action = "";
		if(ParamUtil.getString(actionRequest , "action") != null)
		{
			action = ParamUtil.getString(actionRequest , "action");
		}else{
			HttpServletRequest actionReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			action = actionReq.getParameter("action");
		}
		String trasmittenteId = "";
		if(ParamUtil.getString(actionRequest , "trasmittenteId") != null)
		{
			trasmittenteId = ParamUtil.getString(actionRequest , "trasmittenteId");
		}else{
			HttpServletRequest trasmittenteIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			trasmittenteId = trasmittenteIdReq.getParameter("trasmittenteId");
		}
		String nome = "";
		if(ParamUtil.getString(actionRequest , "nome") != null)
		{
			nome = ParamUtil.getString(actionRequest , "nome");
		}else{
			HttpServletRequest nomeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nome = nomeReq.getParameter("nome");
		}
		String cognome = "";
		if(ParamUtil.getString(actionRequest , "cognome") != null)
		{
			cognome = ParamUtil.getString(actionRequest , "cognome");
		}else{
			HttpServletRequest cognomeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			cognome = cognomeReq.getParameter("cognome");
		}
		String ragioneSociale = "";
		if(ParamUtil.getString(actionRequest , "ragioneSociale") != null)
		{
			ragioneSociale = ParamUtil.getString(actionRequest , "ragioneSociale");
		}else{
			HttpServletRequest ragioneSocialeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			ragioneSociale = ragioneSocialeReq.getParameter("ragioneSociale");
		}
		String codiceFiscale = "";
		if(ParamUtil.getString(actionRequest , "codiceFiscale") != null)
		{
			codiceFiscale = ParamUtil.getString(actionRequest , "codiceFiscale");
		}else{
			HttpServletRequest codiceFiscaleReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			codiceFiscale = codiceFiscaleReq.getParameter("codiceFiscale");
		}
		String piva = "";
		if(ParamUtil.getString(actionRequest , "piva") != null)
		{
			piva = ParamUtil.getString(actionRequest , "piva");
		}else{
			HttpServletRequest pivaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			piva = pivaReq.getParameter("piva");
		}
		String emailPec = "";
		if(ParamUtil.getString(actionRequest , "emailPec") != null)
		{
			emailPec = ParamUtil.getString(actionRequest , "emailPec");
		}else{
			HttpServletRequest emailPecReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			emailPec = emailPecReq.getParameter("emailPec");
		}
		String telefono = "";
		if(ParamUtil.getString(actionRequest , "telefono") != null)
		{
			telefono = ParamUtil.getString(actionRequest , "telefono");
		}else{
			HttpServletRequest telefonoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			telefono = telefonoReq.getParameter("telefono");
		}
		String fax = "";
		if(ParamUtil.getString(actionRequest , "fax") != null)
		{
			fax = ParamUtil.getString(actionRequest , "fax");
		}else{
			HttpServletRequest faxReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			fax = faxReq.getParameter("fax");
		}
		String nazione = "";
		if(ParamUtil.getString(actionRequest , "nazione") != null)
		{
			nazione = ParamUtil.getString(actionRequest , "nazione");
		}else{
			HttpServletRequest nazioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nazione = nazioneReq.getParameter("nazione");
		}
		String codEori = "";
		if(ParamUtil.getString(actionRequest , "codEori") != null)
		{
			codEori = ParamUtil.getString(actionRequest , "codEori");
		}else{
			HttpServletRequest codEoriReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			codEori = codEoriReq.getParameter("codEori");
		}
		String alboProfessionale = "";
		if(ParamUtil.getString(actionRequest , "alboProfessionale") != null)
		{
			alboProfessionale = ParamUtil.getString(actionRequest , "alboProfessionale");
		}else{
			HttpServletRequest alboProfessionaleReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			alboProfessionale = alboProfessionaleReq.getParameter("alboProfessionale");
		}
		String provinciaAlbo = "";
		if(ParamUtil.getString(actionRequest , "provinciaAlbo") != null)
		{
			provinciaAlbo = ParamUtil.getString(actionRequest , "provinciaAlbo");
		}else{
			HttpServletRequest provinciaAlboReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			provinciaAlbo = provinciaAlboReq.getParameter("provinciaAlbo");
		}
		String iscrizioneAlbo = "";
		if(ParamUtil.getString(actionRequest , "iscrizioneAlbo") != null)
		{
			iscrizioneAlbo = ParamUtil.getString(actionRequest , "iscrizioneAlbo");
		}else{
			HttpServletRequest iscrizioneAlboReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			iscrizioneAlbo = iscrizioneAlboReq.getParameter("iscrizioneAlbo");
		}
		String dataIscrizioneAlbo = "";
		if(ParamUtil.getString(actionRequest , "dataIscrizioneAlbo") != null)
		{
			dataIscrizioneAlbo = ParamUtil.getString(actionRequest , "dataIscrizioneAlbo");
		}else{
			HttpServletRequest dataIscrizioneAlboReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			dataIscrizioneAlbo = dataIscrizioneAlboReq.getParameter("dataIscrizioneAlbo");
		}
		String regimeFiscale = "";
		if(ParamUtil.getString(actionRequest , "regimeFiscale") != null)
		{
			regimeFiscale = ParamUtil.getString(actionRequest , "regimeFiscale");
		}else{
			HttpServletRequest regimeFiscaleReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			regimeFiscale = regimeFiscaleReq.getParameter("regimeFiscale");
		}
		String indirizzoSede = "";
		if(ParamUtil.getString(actionRequest , "indirizzoSede") != null)
		{
			indirizzoSede = ParamUtil.getString(actionRequest , "indirizzoSede");
		}else{
			HttpServletRequest indirizzoSedeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			indirizzoSede = indirizzoSedeReq.getParameter("indirizzoSede");
		}
		String nCivicoSede = "";
		if(ParamUtil.getString(actionRequest , "nCivicoSede") != null)
		{
			nCivicoSede = ParamUtil.getString(actionRequest , "nCivicoSede");
		}else{
			HttpServletRequest nCivicoSedeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nCivicoSede = nCivicoSedeReq.getParameter("nCivicoSede");
		}
		String capSede = "";
		if(ParamUtil.getString(actionRequest , "capSede") != null)
		{
			capSede = ParamUtil.getString(actionRequest , "capSede");
		}else{
			HttpServletRequest capSedeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			capSede = capSedeReq.getParameter("capSede");
		}
		String comuneSede = "";
		if(ParamUtil.getString(actionRequest , "comuneSede") != null)
		{
			comuneSede = ParamUtil.getString(actionRequest , "comuneSede");
		}else{
			HttpServletRequest comuneSedeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			comuneSede = comuneSedeReq.getParameter("comuneSede");
		}
		String provinciaSede = "";
		if(ParamUtil.getString(actionRequest , "provinciaSede") != null)
		{
			provinciaSede = ParamUtil.getString(actionRequest , "provinciaSede");
		}else{
			HttpServletRequest provinciaSedeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			provinciaSede = provinciaSedeReq.getParameter("provinciaSede");
		}
		String nazioneSede = "";
		if(ParamUtil.getString(actionRequest , "nazioneSede") != null)
		{
			nazioneSede = ParamUtil.getString(actionRequest , "nazioneSede");
		}else{
			HttpServletRequest nazioneSedeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nazioneSede = nazioneSedeReq.getParameter("nazioneSede");
		}
		String indirizzoSO = "";
		if(ParamUtil.getString(actionRequest , "indirizzoSO") != null)
		{
			indirizzoSO = ParamUtil.getString(actionRequest , "indirizzoSO");
		}else{
			HttpServletRequest indirizzoSOReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			indirizzoSO = indirizzoSOReq.getParameter("indirizzoSO");
		}
		String nCivicoSO = "";
		if(ParamUtil.getString(actionRequest , "nCivicoSO") != null)
		{
			nCivicoSO = ParamUtil.getString(actionRequest , "nCivicoSO");
		}else{
			HttpServletRequest nCivicoSOReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nCivicoSO = nCivicoSOReq.getParameter("nCivicoSO");
		}
		String capSO = "";
		if(ParamUtil.getString(actionRequest , "capSO") != null)
		{
			capSO = ParamUtil.getString(actionRequest , "capSO");
		}else{
			HttpServletRequest capSOReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			capSO = capSOReq.getParameter("capSO");
		}
		String comuneSO = "";
		if(ParamUtil.getString(actionRequest , "comuneSO") != null)
		{
			comuneSO = ParamUtil.getString(actionRequest , "comuneSO");
		}else{
			HttpServletRequest comuneSOReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			comuneSO = comuneSOReq.getParameter("comuneSO");
		}
		String provinciaSO = "";
		if(ParamUtil.getString(actionRequest , "provinciaSO") != null)
		{
			provinciaSO = ParamUtil.getString(actionRequest , "provinciaSO");
		}else{
			HttpServletRequest provinciaSOReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			provinciaSO = provinciaSOReq.getParameter("provinciaSO");
		}
		String nazioneSO = "";
		if(ParamUtil.getString(actionRequest , "nazioneSO") != null)
		{
			nazioneSO = ParamUtil.getString(actionRequest , "nazioneSO");
		}else{
			HttpServletRequest nazioneSOReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nazioneSO = nazioneSOReq.getParameter("nazioneSO");
		}
		String ufficioRea = "";
		if(ParamUtil.getString(actionRequest , "ufficio") != null)
		{
			ufficioRea = ParamUtil.getString(actionRequest , "ufficio");
		}else{
			HttpServletRequest ufficioReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			ufficioRea = ufficioReq.getParameter("ufficio");
		}
		String nRea = "";
		if(ParamUtil.getString(actionRequest , "nRea") != null)
		{
			nRea = ParamUtil.getString(actionRequest , "nRea");
		}else{
			HttpServletRequest nReaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nRea = nReaReq.getParameter("nRea");
		}
		String capitaleSocialeRea = "";
		if(ParamUtil.getString(actionRequest , "capitaleSociale") != null)
		{
			capitaleSocialeRea = ParamUtil.getString(actionRequest , "capitaleSociale");
		}else{
			HttpServletRequest capitaleSocialeReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			capitaleSocialeRea = capitaleSocialeReq.getParameter("capitaleSociale");
		}
		String socioUnicoRea = "";
		if(ParamUtil.getString(actionRequest , "socioUnico") != null)
		{
			socioUnicoRea = ParamUtil.getString(actionRequest , "socioUnico");
		}else{
			HttpServletRequest socioUnicoReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			socioUnicoRea = socioUnicoReq.getParameter("socioUnico");
		}
		String statoLiquidazioneRea = "";
		if(ParamUtil.getString(actionRequest , "statoliquidazione") != null)
		{
			statoLiquidazioneRea = ParamUtil.getString(actionRequest , "statoliquidazione");
		}else{
			HttpServletRequest statoliquidazioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			statoLiquidazioneRea = statoliquidazioneReq.getParameter("statoliquidazione");
		}
		String riferimentoAmministrazioneRea = "";
		if(ParamUtil.getString(actionRequest , "riferimentoAmministrazione") != null)
		{
			riferimentoAmministrazioneRea = ParamUtil.getString(actionRequest , "riferimentoAmministrazione");
		}else{
			HttpServletRequest riferimentoAmministrazioneReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			riferimentoAmministrazioneRea = riferimentoAmministrazioneReq.getParameter("riferimentoAmministrazione");
		}
		
		Trasmittente trasmittente = null;		
		if(action.equals("UPDATE")){
			trasmittente = TrasmittenteLocalServiceUtil.getTrasmittente(Long.valueOf(trasmittenteId));
		}else if(action.equals("ADD")){
			trasmittente = TrasmittenteLocalServiceUtil.createTrasmittente(CounterLocalServiceUtil.increment(Trasmittente.class.getName()));
		}
		
		ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
		
		trasmittente.setNome(nome.toUpperCase());
		trasmittente.setCognome(cognome.toUpperCase());
		trasmittente.setRagioneSociale(ragioneSociale.toUpperCase());
		trasmittente.setCodiceFiscale(codiceFiscale);
		trasmittente.setPiva(piva);
		trasmittente.setEmailPec(emailPec);
		trasmittente.setTelefono(telefono);
		trasmittente.setFax(fax);
		trasmittente.setNazione(nazione);
		trasmittente.setCodEori(codEori);
		trasmittente.setAlboProfessionale(alboProfessionale.toUpperCase());
		trasmittente.setProvinciaAlbo(provinciaAlbo.toUpperCase());
		trasmittente.setNumeroIscrAlbo(iscrizioneAlbo.toUpperCase());
		trasmittente.setDataIscrAlbo(dataIscrizioneAlbo);
		trasmittente.setRegimeFiscale(regimeFiscale);
		trasmittente.setUserId(themeDisplay.getUserId());
		
		trasmittente.setIndirizzoSede(indirizzoSede.toUpperCase());
		trasmittente.setCivicoSede(nCivicoSede);
		trasmittente.setCapSede(capSede);
		trasmittente.setComuneSede(comuneSede.toUpperCase());
		trasmittente.setProvinciaSede(provinciaSede);
		trasmittente.setNazioneSede(nazioneSede);

		trasmittente.setIndirizzoStabileOrg(indirizzoSO);
		trasmittente.setCivicoStabileOrg(nCivicoSO);
		trasmittente.setCapStabileOrg(capSO);
		trasmittente.setComuneStabileOrg(comuneSO);
		trasmittente.setProvinciaStabileOrg(provinciaSO);
		trasmittente.setNazioneStabileOrg(nazioneSO);
		
		trasmittente.setUfficioRea(ufficioRea);
		trasmittente.setNRea(nRea);
		trasmittente.setCapitaleSocialeRea(capitaleSocialeRea);
		trasmittente.setSocioUnicoRea(socioUnicoRea);
		trasmittente.setStatoLiquidazioneRea(statoLiquidazioneRea);
		trasmittente.setRiferimentoAmministrazioneRea(riferimentoAmministrazioneRea);
		
		if(action.equals("UPDATE")){
			TrasmittenteLocalServiceUtil.updateTrasmittente(trasmittente);
		}else if(action.equals("ADD")){
			TrasmittenteLocalServiceUtil.addTrasmittente(trasmittente);
		}
		
		
	}

	public void salvaRicevente(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException {
		System.out.println("** salvaRicevente **");
		
		String action = "";
		if(ParamUtil.getString(actionRequest , "action") != null)
		{
			action = ParamUtil.getString(actionRequest , "action");
		}else{
			HttpServletRequest actionReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			action = actionReq.getParameter("action");
		}
		
		String riceventeId = "";
		if(ParamUtil.getString(actionRequest , "riceventeId") != null)
		{
			riceventeId = ParamUtil.getString(actionRequest , "riceventeId");
		}else{
			HttpServletRequest riceventeIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			riceventeId = riceventeIdReq.getParameter("riceventeId");
		}
		
		String codiceIpa = "";
		if(ParamUtil.getString(actionRequest , "codiceIpa") != null)
		{
			codiceIpa = ParamUtil.getString(actionRequest , "codiceIpa");
		}else{
			HttpServletRequest codiceIpaReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			codiceIpa = codiceIpaReq.getParameter("codiceIpa");
		}
		String nomeRic = "";
		if(ParamUtil.getString(actionRequest , "nome") != null)
		{
			nomeRic = ParamUtil.getString(actionRequest , "nome");
		}else{
			HttpServletRequest nomeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nomeRic = nomeRicReq.getParameter("nome");
		}
		String cognomeRic = "";
		if(ParamUtil.getString(actionRequest , "cognome") != null)
		{
			cognomeRic = ParamUtil.getString(actionRequest , "cognome");
		}else{
			HttpServletRequest cognomeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			cognomeRic = cognomeRicReq.getParameter("cognome");
		}		
		String ragioneSocialeRic = "";
		if(ParamUtil.getString(actionRequest , "ragioneSociale") != null)
		{
			ragioneSocialeRic = ParamUtil.getString(actionRequest , "ragioneSociale");
		}else{
			HttpServletRequest ragioneSocialeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			ragioneSocialeRic = ragioneSocialeRicReq.getParameter("ragioneSociale");
		}
		String codFiscaleRic = "";
		if(ParamUtil.getString(actionRequest , "codFiscale") != null)
		{
			codFiscaleRic = ParamUtil.getString(actionRequest , "codFiscale");
		}else{
			HttpServletRequest codFiscaleRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			codFiscaleRic = codFiscaleRicReq.getParameter("codFiscale");
		}
		String nazioneRic = "";
		if(ParamUtil.getString(actionRequest , "nazione") != null)
		{
			nazioneRic = ParamUtil.getString(actionRequest , "nazione");
		}else{
			HttpServletRequest nazioneRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nazioneRic = nazioneRicReq.getParameter("nazione");
		}
		String codEoriRic = "";
		if(ParamUtil.getString(actionRequest , "codEori") != null)
		{
			codEoriRic = ParamUtil.getString(actionRequest , "codEori");
		}else{
			HttpServletRequest codEoriRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			codEoriRic = codEoriRicReq.getParameter("codEori");
		}
		String indirizzoSedeRic = "";
		if(ParamUtil.getString(actionRequest , "indirizzoSede") != null)
		{
			indirizzoSedeRic = ParamUtil.getString(actionRequest , "indirizzoSede");
		}else{
			HttpServletRequest indirizzoSedeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			indirizzoSedeRic = indirizzoSedeRicReq.getParameter("indirizzoSede");
		}
		String civicoSedeRic = "";
		if(ParamUtil.getString(actionRequest , "civicoSede") != null)
		{
			civicoSedeRic = ParamUtil.getString(actionRequest , "civicoSede");
		}else{
			HttpServletRequest civicoSedeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			civicoSedeRic = civicoSedeRicReq.getParameter("civicoSede");
		}
		String capSedeRic = "";
		if(ParamUtil.getString(actionRequest , "capSede") != null)
		{
			capSedeRic = ParamUtil.getString(actionRequest , "capSede");
		}else{
			HttpServletRequest capSedeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			capSedeRic = capSedeRicReq.getParameter("capSede");
		}
		String comuneSedeRic = "";
		if(ParamUtil.getString(actionRequest , "comuneSede") != null)
		{
			comuneSedeRic = ParamUtil.getString(actionRequest , "comuneSede");
		}else{
			HttpServletRequest comuneSedeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			comuneSedeRic = comuneSedeRicReq.getParameter("comuneSede");
		}
		String provinciaSedeRic = "";
		if(ParamUtil.getString(actionRequest , "provinciaSede") != null)
		{
			provinciaSedeRic = ParamUtil.getString(actionRequest , "provinciaSede");
		}else{
			HttpServletRequest provinciaSedeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			provinciaSedeRic = provinciaSedeRicReq.getParameter("provinciaSede");
		}
		String nazioneSedeRic = "";
		if(ParamUtil.getString(actionRequest , "nazioneSede") != null)
		{
			nazioneSedeRic = ParamUtil.getString(actionRequest , "nazioneSede");
		}else{
			HttpServletRequest nazioneSedeRicReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
			nazioneSedeRic = nazioneSedeRicReq.getParameter("nazioneSede");
		}

		Ricevente ricevente = null;		
		if(action.equals("UPDATE")){
			ricevente = RiceventeLocalServiceUtil.getRicevente(Long.valueOf(riceventeId));
		}else if(action.equals("ADD")){
			ricevente = RiceventeLocalServiceUtil.createRicevente(CounterLocalServiceUtil.increment(Ricevente.class.getName()));
		}
		
		ricevente.setCodiceIpa(codiceIpa.toUpperCase());
		ricevente.setNomeRic(nomeRic.toUpperCase());
		ricevente.setCognomeRic(cognomeRic.toUpperCase());
		ricevente.setRagioneSocialeRic(ragioneSocialeRic.toUpperCase());
		ricevente.setCodFiscaleRic(codFiscaleRic.toUpperCase());
		ricevente.setNazioneRic(nazioneRic);
		ricevente.setCodEoriRic(codEoriRic);
		ricevente.setIndirizzoSedeRic(indirizzoSedeRic.toUpperCase());
		ricevente.setCivicoSedeRic(civicoSedeRic.toUpperCase());
		ricevente.setCapSedeRic(capSedeRic);
		ricevente.setComuneSedeRic(comuneSedeRic.toUpperCase());
		ricevente.setProvinciaSedeRic(provinciaSedeRic);
		ricevente.setNazioneSedeRic(nazioneSedeRic);
		
		if(action.equals("UPDATE")){
			RiceventeLocalServiceUtil.updateRicevente(ricevente);
		}else if(action.equals("ADD")){
			RiceventeLocalServiceUtil.addRicevente(ricevente);
		}
		
	}
	
	public void creaDocumentoXml(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException {
		
		ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
		String realPath = getPortletContext().getRealPath("/");
		ServiceContext serviceContext = new ServiceContext();
		
		try {
			long documentoId = 0;
			String d = "";
			if(ParamUtil.getString(actionRequest , "documentoId") != null)
			{
				documentoId = ParamUtil.getLong(actionRequest , "documentoId");
			}else{
				HttpServletRequest documentoIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				d = documentoIdReq.getParameter("documentoId");
				documentoId = Long.valueOf(d);
			}
			Documento documento = DocumentoLocalServiceUtil.getDocumento(documentoId);
			List<LineaFattura> competenze = LineaFatturaLocalServiceUtil.getCompetenze(documento.getDocumentoId());
			Trasmittente trasmittente = TrasmittenteLocalServiceUtil.getTrasmittente(documento.getTrasmittenteIDFK());
			Ricevente ricevente = RiceventeLocalServiceUtil.getRicevente(documento.getRiceventeIDFK());
			List<TerzoIntermediario> terzoIntermediario = TerzoIntermediarioLocalServiceUtil.getTerzoIntermediarios(0, 1);
			
				
			String nomeFileXml = "IT"+trasmittente.getCodiceFiscale()+"_"+ documento.getNumeroDocumento()+".xml";
			
			DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
	 
			// root FatturaElettronicaHeader
			Document doc = docBuilder.newDocument();
			
			Element pFatturaElettronica = doc.createElement("p:FatturaElettronica");
			doc.appendChild(pFatturaElettronica);
			Attr versione = doc.createAttribute("versione");
			versione.setValue("1.1");
			Attr ds = doc.createAttribute("xmlns:ds");
			ds.setValue("http://www.w3.org/2000/09/xmldsig#");
			Attr p = doc.createAttribute("xmlns:p");
			p.setValue("http://www.fatturapa.gov.it/sdi/fatturapa/v1.1");
			Attr xsi = doc.createAttribute("xmlns:xsi");
			xsi.setValue("http://www.w3.org/2001/XMLSchema-instance");
			
			pFatturaElettronica.setAttributeNode(versione);
			pFatturaElettronica.setAttributeNode(p);
			pFatturaElettronica.setAttributeNode(ds);
			pFatturaElettronica.setAttributeNode(xsi);
			
			Element fatturaElettronicaHeader = doc.createElement("FatturaElettronicaHeader");
			pFatturaElettronica.appendChild(fatturaElettronicaHeader);
	 
			// DatiTrasmissione
			Element datiTrasmissione = doc.createElement("DatiTrasmissione");
			fatturaElettronicaHeader.appendChild(datiTrasmissione);
	 
			Element idTrasmittente = doc.createElement("IdTrasmittente");
			datiTrasmissione.appendChild(idTrasmittente);

			Element idPaeseTrasm = doc.createElement("IdPaese");
			idPaeseTrasm.appendChild(doc.createTextNode("IT"));
			idTrasmittente.appendChild(idPaeseTrasm);
			
			Element idCodiceTrasm = doc.createElement("IdCodice");			
			idCodiceTrasm.appendChild(doc.createTextNode(trasmittente.getCodiceFiscale()));
			idTrasmittente.appendChild(idCodiceTrasm);
	
			Element progressivoInvio = doc.createElement("ProgressivoInvio");
			progressivoInvio.appendChild(doc.createTextNode(documento.getProgressivoInvio()));
			datiTrasmissione.appendChild(progressivoInvio);

			Element formatoTrasmissione = doc.createElement("FormatoTrasmissione");
			formatoTrasmissione.appendChild(doc.createTextNode("SDI11"));
			datiTrasmissione.appendChild(formatoTrasmissione);

			Element codiceDestinatario = doc.createElement("CodiceDestinatario");			
			codiceDestinatario.appendChild(doc.createTextNode(ricevente.getCodiceIpa()));
			datiTrasmissione.appendChild(codiceDestinatario);

			if(trasmittente.getTelefono().length() > 0 || trasmittente.getEmailPec().length() > 0)
			{
				Element contattiTrasmittente = doc.createElement("ContattiTrasmittente");
				datiTrasmissione.appendChild(contattiTrasmittente);
				
				if(trasmittente.getTelefono().length() > 0)
				{
					Element telefonoTrasmittente = doc.createElement("Telefono");
					telefonoTrasmittente.appendChild(doc.createTextNode(trasmittente.getTelefono()));
					contattiTrasmittente.appendChild(telefonoTrasmittente);
				}
				if(trasmittente.getEmailPec().length() > 0)
				{
					Element emailTrasmittente = doc.createElement("Email");
					emailTrasmittente.appendChild(doc.createTextNode(trasmittente.getEmailPec()));
					contattiTrasmittente.appendChild(emailTrasmittente);
				}
			}
			
			// CedentePrestatore
			Element cedentePrestatore = doc.createElement("CedentePrestatore");
			fatturaElettronicaHeader.appendChild(cedentePrestatore);

			Element datiAnagrafici = doc.createElement("DatiAnagrafici");
			cedentePrestatore.appendChild(datiAnagrafici);

			Element idFiscaleIVA = doc.createElement("IdFiscaleIVA");
			datiAnagrafici.appendChild(idFiscaleIVA);	

			Element idPaeseCed = doc.createElement("IdPaese");
			idPaeseCed.appendChild(doc.createTextNode("IT"));
			idFiscaleIVA.appendChild(idPaeseCed);

			Element idCodiceCed = doc.createElement("IdCodice");
			idCodiceCed.appendChild(doc.createTextNode(trasmittente.getPiva()));
			idFiscaleIVA.appendChild(idCodiceCed);
			if(trasmittente.getCodiceFiscale().length() > 0)
			{
				Element codiceFiscaleCed = doc.createElement("CodiceFiscale");
				codiceFiscaleCed.appendChild(doc.createTextNode(trasmittente.getCodiceFiscale()));
				datiAnagrafici.appendChild(codiceFiscaleCed);
			}
			
			Element anagrafica = doc.createElement("Anagrafica");
			datiAnagrafici.appendChild(anagrafica);

			if(trasmittente.getRagioneSociale().length() > 0){
				Element denominazione = doc.createElement("Denominazione");
				denominazione.appendChild(doc.createTextNode(trasmittente.getRagioneSociale().toUpperCase()));
				anagrafica.appendChild(denominazione);
			}else{
				Element nome = doc.createElement("Nome");
				nome.appendChild(doc.createTextNode(trasmittente.getNome()));
				anagrafica.appendChild(nome);
				Element cognome = doc.createElement("Cognome");
				cognome.appendChild(doc.createTextNode(trasmittente.getCognome()));
				anagrafica.appendChild(cognome);
			}

			if(trasmittente.getCodEori().length() > 0)
			{
				Element codeori = doc.createElement("CodEORI");
				codeori.appendChild(doc.createTextNode(trasmittente.getCodEori()));
				anagrafica.appendChild(codeori);
			}
			if(trasmittente.getAlboProfessionale().length() > 0)
			{
				Element alboProfessionale = doc.createElement("AlboProfessionale");
				alboProfessionale.appendChild(doc.createTextNode(trasmittente.getAlboProfessionale()));
				datiAnagrafici.appendChild(alboProfessionale);
			}
			if(trasmittente.getProvinciaAlbo().length() > 0)
			{
				Element provinciaAlbo = doc.createElement("ProvinciaAlbo");
				provinciaAlbo.appendChild(doc.createTextNode(trasmittente.getProvinciaAlbo()));	
				datiAnagrafici.appendChild(provinciaAlbo);
			}
			if(trasmittente.getNumeroIscrAlbo().length() > 0)
			{
				Element numeroIscrizioneAlbo = doc.createElement("NumeroIscrizioneAlbo");
				numeroIscrizioneAlbo.appendChild(doc.createTextNode(trasmittente.getNumeroIscrAlbo()));
				datiAnagrafici.appendChild(numeroIscrizioneAlbo);
			}
			if(trasmittente.getDataIscrAlbo().length() > 0)
			{
				Element dataIscrizioneAlbo = doc.createElement("DataIscrizioneAlbo");
				dataIscrizioneAlbo.appendChild(doc.createTextNode(trasmittente.getDataIscrAlbo()));
				datiAnagrafici.appendChild(dataIscrizioneAlbo);
			}

			Element regimeFiscale = doc.createElement("RegimeFiscale");
			regimeFiscale.appendChild(doc.createTextNode(trasmittente.getRegimeFiscale()));
			datiAnagrafici.appendChild(regimeFiscale);
			
			Element sede = doc.createElement("Sede");
			cedentePrestatore.appendChild(sede);
			
			Element indirizzo = doc.createElement("Indirizzo");
			indirizzo.appendChild(doc.createTextNode(trasmittente.getIndirizzoSede().toUpperCase()));
			sede.appendChild(indirizzo);
			if(trasmittente.getCivicoSede().length() > 0)
			{
				Element nCivico = doc.createElement("NumeroCivico");
				nCivico.appendChild(doc.createTextNode(trasmittente.getCivicoSede()));
				sede.appendChild(nCivico);
			}			
			Element cap = doc.createElement("CAP");
			cap.appendChild(doc.createTextNode(trasmittente.getCapSede()));
			sede.appendChild(cap);
			
			Element comune = doc.createElement("Comune");
			comune.appendChild(doc.createTextNode(trasmittente.getComuneSede().toUpperCase()));
			sede.appendChild(comune);
			if(trasmittente.getProvinciaSede().length() > 0 && trasmittente.getNazioneSede().equals("IT"))
			{
				Element provincia = doc.createElement("Provincia");
				provincia.appendChild(doc.createTextNode(trasmittente.getProvinciaSede().toUpperCase()));	
				sede.appendChild(provincia);
			}
			Element nazione = doc.createElement("Nazione");
			nazione.appendChild(doc.createTextNode(trasmittente.getNazioneSede()));
			sede.appendChild(nazione);

			if(trasmittente.getIndirizzoStabileOrg().length() > 0)
			{
				Element stabileOrganizzazione = doc.createElement("StabileOrganizzazione");
				cedentePrestatore.appendChild(stabileOrganizzazione);
			
				Element indirizzoSO = doc.createElement("Indirizzo");
				indirizzoSO.appendChild(doc.createTextNode(trasmittente.getIndirizzoStabileOrg()));
				stabileOrganizzazione.appendChild(indirizzoSO);

				Element nCivicoSO = doc.createElement("NumeroCivico");
				nCivicoSO.appendChild(doc.createTextNode(trasmittente.getCivicoStabileOrg()));
				stabileOrganizzazione.appendChild(nCivicoSO);
			
				Element capSO = doc.createElement("CAP");
				capSO.appendChild(doc.createTextNode(trasmittente.getCapStabileOrg()));
				stabileOrganizzazione.appendChild(capSO);
			
				Element comuneSO = doc.createElement("Comune");
				comuneSO.appendChild(doc.createTextNode(trasmittente.getComuneStabileOrg()));
				stabileOrganizzazione.appendChild(comuneSO);
			
				Element provinciaSO = doc.createElement("Provincia");
				provinciaSO.appendChild(doc.createTextNode(trasmittente.getProvinciaStabileOrg()));
				stabileOrganizzazione.appendChild(provinciaSO);
			
				Element nazioneSO = doc.createElement("Nazione");
				nazioneSO.appendChild(doc.createTextNode("IT"));
				stabileOrganizzazione.appendChild(nazioneSO);
			}

			if(trasmittente.getUfficioRea().length() > 0)
			{
				Element iscrizioneRea = doc.createElement("IscrizioneREA");
				cedentePrestatore.appendChild(iscrizioneRea);
			
				Element ufficioRea = doc.createElement("Ufficio");
				ufficioRea.appendChild(doc.createTextNode(trasmittente.getUfficioRea()));
				iscrizioneRea.appendChild(ufficioRea);
			
				Element numeroRea = doc.createElement("NumeroREA");
				numeroRea.appendChild(doc.createTextNode(trasmittente.getNRea()));
				iscrizioneRea.appendChild(numeroRea);
			
				Element capitaleSociale = doc.createElement("CapitaleSociale");
				capitaleSociale.appendChild(doc.createTextNode(trasmittente.getCapitaleSocialeRea()));
				iscrizioneRea.appendChild(capitaleSociale);
			
				Element socioUnico = doc.createElement("SocioUnico");
				socioUnico.appendChild(doc.createTextNode(trasmittente.getSocioUnicoRea()));
				iscrizioneRea.appendChild(socioUnico);
			
				Element statoLiquidazione = doc.createElement("StatoLiquidazione");
				statoLiquidazione.appendChild(doc.createTextNode(trasmittente.getStatoLiquidazioneRea()));
				iscrizioneRea.appendChild(statoLiquidazione);
			}
			if(trasmittente.getTelefono().length() > 0 || trasmittente.getEmailPec().length() > 0 || trasmittente.getFax().length() > 0)
			{
				Element contatti = doc.createElement("Contatti");
				cedentePrestatore.appendChild(contatti);
				if(trasmittente.getTelefono().length() > 0)
				{
					Element telefonoContatti = doc.createElement("Telefono");
					telefonoContatti.appendChild(doc.createTextNode(trasmittente.getTelefono()));
					contatti.appendChild(telefonoContatti);
				}
				if(trasmittente.getFax().length() > 0)
				{
					Element faxContatti = doc.createElement("Fax");
					faxContatti.appendChild(doc.createTextNode(trasmittente.getFax()));
					contatti.appendChild(faxContatti);
				}
				if(trasmittente.getEmailPec().length() > 0)
				{
					Element emailContatti = doc.createElement("Email");
					emailContatti.appendChild(doc.createTextNode(trasmittente.getEmailPec()));
					contatti.appendChild(emailContatti);
				}
			}
			if(trasmittente.getRiferimentoAmministrazioneRea().length() > 0)
			{
				Element rifAmm = doc.createElement("RiferimentoAmministrazione");
				rifAmm.appendChild(doc.createTextNode(trasmittente.getRiferimentoAmministrazioneRea()));
				cedentePrestatore.appendChild(rifAmm);
			}
			/*
			// RAPPRESENTANTE FISCALE
			Element rappresentanteFiscale = doc.createElement("RappresentanteFiscale");
			fatturaElettronicaHeader.appendChild(rappresentanteFiscale);
			
			Element datiAnagraficiRaprFisc = doc.createElement("DatiAnagrafici");
			rappresentanteFiscale.appendChild(datiAnagraficiRaprFisc);
			
			Element idFiscaleIVARaprFisc = doc.createElement("IdFiscaleIVA");
			datiAnagraficiRaprFisc.appendChild(idFiscaleIVARaprFisc);			
			
			Element idPaeseRaprFisc = doc.createElement("IdPaese");
			idPaeseRaprFisc.appendChild(doc.createTextNode("IT"));
			idFiscaleIVARaprFisc.appendChild(idPaeseRaprFisc);
			Element idCodiceRaprFisc = doc.createElement("IdCodice");
			idCodiceRaprFisc.appendChild(doc.createTextNode(trasmittente.getPiva()));
			idFiscaleIVARaprFisc.appendChild(idCodiceRaprFisc);
			
			Element codiceFiscaleRaprFisc = doc.createElement("CodiceFiscale");
			datiAnagraficiRaprFisc.appendChild(codiceFiscaleRaprFisc);
			
			Element anagraficaRaprFisc = doc.createElement("Anagrafica");
			datiAnagraficiRaprFisc.appendChild(anagraficaRaprFisc);
			
			Element denominazioneRaprFisc = doc.createElement("Denominazione");
			denominazioneRaprFisc.appendChild(doc.createTextNode(trasmittente.getRagioneSociale()));
			anagraficaRaprFisc.appendChild(denominazioneRaprFisc);
			
			Element nomeRaprFisc = doc.createElement("Nome");
			nomeRaprFisc.appendChild(doc.createTextNode(trasmittente.getNome()));
			anagraficaRaprFisc.appendChild(nomeRaprFisc);
			
			Element cognomeRaprFisc = doc.createElement("Cognome");
			cognomeRaprFisc.appendChild(doc.createTextNode(trasmittente.getCognome()));
			anagraficaRaprFisc.appendChild(cognomeRaprFisc);
			
			Element codeoriRaprFisc = doc.createElement("CodEORI");
			codeoriRaprFisc.appendChild(doc.createTextNode(trasmittente.getCodEori()));
			anagraficaRaprFisc.appendChild(codeoriRaprFisc);
			*/
			// CESSIONARIO/COMMITTENTE
			Element cessionarioCommittente = doc.createElement("CessionarioCommittente");
			fatturaElettronicaHeader.appendChild(cessionarioCommittente);
			
			Element datiAnagraficiCommittente = doc.createElement("DatiAnagrafici");
			cessionarioCommittente.appendChild(datiAnagraficiCommittente);
			
			if(ricevente.getPIvaRic().length() > 0 )
			{
				Element idFiscaleIVACommittente = doc.createElement("IdFiscaleIVA");
				datiAnagraficiCommittente.appendChild(idFiscaleIVACommittente);			
				Element idPaeseCommittente = doc.createElement("IdPaese");
				idPaeseCommittente.appendChild(doc.createTextNode("IT"));
				idFiscaleIVACommittente.appendChild(idPaeseCommittente);
				Element idCodiceCommittente = doc.createElement("IdCodice");
				idCodiceCommittente.appendChild(doc.createTextNode(ricevente.getPIvaRic()));
				idFiscaleIVACommittente.appendChild(idCodiceCommittente);
			} else {
				Element codiceFiscaleCommittente = doc.createElement("CodiceFiscale");
				codiceFiscaleCommittente.appendChild(doc.createTextNode(ricevente.getCodFiscaleRic().toUpperCase()));
				datiAnagraficiCommittente.appendChild(codiceFiscaleCommittente);
			}
			Element anagraficaCed = doc.createElement("Anagrafica");
			datiAnagraficiCommittente.appendChild(anagraficaCed);
			if(ricevente.getRagioneSocialeRic().length() > 0)
			{
				Element denominazioneCed = doc.createElement("Denominazione");
				denominazioneCed.appendChild(doc.createTextNode(ricevente.getRagioneSocialeRic().toUpperCase()));
				anagraficaCed.appendChild(denominazioneCed);
			}else if(ricevente.getNomeRic().length() > 0 && ricevente.getCognomeRic().length() > 0)
			{
				Element nomeCed = doc.createElement("Nome");
				nomeCed.appendChild(doc.createTextNode(ricevente.getNomeRic().toUpperCase()));
				anagraficaCed.appendChild(nomeCed);
				Element cognomeCed = doc.createElement("Cognome");
				cognomeCed.appendChild(doc.createTextNode(ricevente.getCognomeRic().toUpperCase()));
				anagraficaCed.appendChild(cognomeCed);
			}
			Element sedeCed = doc.createElement("Sede");
			cessionarioCommittente.appendChild(sedeCed);
			
			Element indirizzoCed = doc.createElement("Indirizzo");
			indirizzoCed.appendChild(doc.createTextNode(ricevente.getIndirizzoSedeRic().toUpperCase()));
			sedeCed.appendChild(indirizzoCed);
			if(ricevente.getCivicoSedeRic().length() > 0)
			{
				Element numCivico = doc.createElement("NumeroCivico");
				numCivico.appendChild(doc.createTextNode(ricevente.getCivicoSedeRic()));
				sedeCed.appendChild(numCivico);
			}
			Element capCed = doc.createElement("CAP");
			capCed.appendChild(doc.createTextNode(ricevente.getCapSedeRic().toUpperCase()));
			sedeCed.appendChild(capCed);
			
			Element comuneCed = doc.createElement("Comune");
			comuneCed.appendChild(doc.createTextNode(ricevente.getComuneSedeRic().toUpperCase()));
			sedeCed.appendChild(comuneCed);
			if(ricevente.getNazioneSedeRic().equals("IT"))
			{
				Element provinciaCed = doc.createElement("Provincia");
				provinciaCed.appendChild(doc.createTextNode(ricevente.getProvinciaSedeRic().toUpperCase()));
				sedeCed.appendChild(provinciaCed);
			}
			Element nazioneCed = doc.createElement("Nazione");
			nazioneCed.appendChild(doc.createTextNode(ricevente.getNazioneSedeRic()));
			sedeCed.appendChild(nazioneCed);
		/*
			// TERZO INTERMEDIARIO
			if(terzoIntermediario != null)
			{
				Element terzoIntermediarioOSoggettoEmittente = doc.createElement("TerzoIntermediarioOSoggettoEmittente");
				fatturaElettronicaHeader.appendChild(terzoIntermediarioOSoggettoEmittente);
			
				Element datiAnagraficiIntermediario = doc.createElement("DatiAnagrafici");
				terzoIntermediarioOSoggettoEmittente.appendChild(datiAnagraficiIntermediario);
			
				Element idFiscaleIVAIntermediario = doc.createElement("IdFiscaleIVA");
				datiAnagraficiIntermediario.appendChild(idFiscaleIVAIntermediario);			
			
				Element idPaeseIntermediario = doc.createElement("IdPaese");
				idPaeseIntermediario.appendChild(doc.createTextNode("IT"));
				idFiscaleIVAIntermediario.appendChild(idPaeseIntermediario);
				Element idCodiceIntermediario = doc.createElement("IdCodice");
				idCodiceIntermediario.appendChild(doc.createTextNode(trasmittente.getPiva()));
				idFiscaleIVAIntermediario.appendChild(idCodiceIntermediario);
			
				Element codiceFiscaleIntermediario = doc.createElement("CodiceFiscale");
				datiAnagraficiIntermediario.appendChild(codiceFiscaleIntermediario);
			
				Element anagraficaIntermediario = doc.createElement("Anagrafica");
				datiAnagraficiIntermediario.appendChild(anagraficaIntermediario);
			
				Element denominazioneIntermediario = doc.createElement("Denominazione");
				denominazioneIntermediario.appendChild(doc.createTextNode(trasmittente.getRagioneSociale()));
				anagraficaIntermediario.appendChild(denominazioneIntermediario);
			
				Element nomeIntermediario = doc.createElement("Nome");
				nomeIntermediario.appendChild(doc.createTextNode(trasmittente.getNome()));
				anagraficaIntermediario.appendChild(nomeIntermediario);
			
				Element cognomeIntermediario = doc.createElement("Cognome");
				cognomeIntermediario.appendChild(doc.createTextNode(trasmittente.getCognome()));
				anagraficaIntermediario.appendChild(cognomeIntermediario);
			
				Element codeoriIntermediario = doc.createElement("CodEORI");
				codeoriIntermediario.appendChild(doc.createTextNode(trasmittente.getCodEori()));
				anagraficaIntermediario.appendChild(codeoriIntermediario);
			}*/
			// SOGGETTO EMITTENTE
			Element soggettoEmittente = doc.createElement("SoggettoEmittente");
			if(terzoIntermediario.size() > 0)
			{
				soggettoEmittente.appendChild(doc.createTextNode("TZ")); // VALORI AMMESSI: "CC" o "TZ"
			}else{
				soggettoEmittente.appendChild(doc.createTextNode("CC"));
			}
			fatturaElettronicaHeader.appendChild(soggettoEmittente);
			
			// FATTURA ELETTRONICA BODY
			
			Element fatturaElettronicaBody = doc.createElement("FatturaElettronicaBody");
			pFatturaElettronica.appendChild(fatturaElettronicaBody);
			
			Element datiGenerali = doc.createElement("DatiGenerali");
			fatturaElettronicaBody.appendChild(datiGenerali);
			
			Element datiGeneraliDocumento = doc.createElement("DatiGeneraliDocumento");
			datiGenerali.appendChild(datiGeneraliDocumento);
			
			Element tipoDocumento = doc.createElement("TipoDocumento");
			tipoDocumento.appendChild(doc.createTextNode(documento.getTipoDocumento()));
			datiGeneraliDocumento.appendChild(tipoDocumento);
			
			Element divisa = doc.createElement("Divisa");
			divisa.appendChild(doc.createTextNode("EUR"));
			datiGeneraliDocumento.appendChild(divisa);
			
			Element data = doc.createElement("Data");
						
			data.appendChild(doc.createTextNode(documento.getDataDocumento()));
			datiGeneraliDocumento.appendChild(data);
			
			Element numero = doc.createElement("Numero");
			numero.appendChild(doc.createTextNode(documento.getNumeroDocumento()));
			datiGeneraliDocumento.appendChild(numero);
			
			Element datiRitenuta = doc.createElement("DatiRitenuta");
			datiGeneraliDocumento.appendChild(datiRitenuta);
			
			Element tipoRitenuta = doc.createElement("TipoRitenuta");
			tipoRitenuta.appendChild(doc.createTextNode(documento.getTipoRitenuta().toUpperCase()));
			datiRitenuta.appendChild(tipoRitenuta);
			
			Element importoRitenuta = doc.createElement("ImportoRitenuta");
			importoRitenuta.appendChild(doc.createTextNode(String.valueOf(documento.getImportoRitenuta())));
			datiRitenuta.appendChild(importoRitenuta);
			
			Element aliquotaRitenuta = doc.createElement("AliquotaRitenuta");
			aliquotaRitenuta.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getAliquotaRitenuta()))));
			datiRitenuta.appendChild(aliquotaRitenuta);
			
			Element causalePagamento = doc.createElement("CausalePagamento");
			causalePagamento.appendChild(doc.createTextNode("A"));
			datiRitenuta.appendChild(causalePagamento);
			
			if(documento.getBolloVirtuale().length() > 0)
			{
				Element datiBollo = doc.createElement("DatiBollo");
				datiGeneraliDocumento.appendChild(datiBollo);
				
				Element bolloVirtuale = doc.createElement("BolloVirtuale");
				bolloVirtuale.appendChild(doc.createTextNode(documento.getBolloVirtuale()));
				datiBollo.appendChild(bolloVirtuale);
				
				Element importoBollo = doc.createElement("ImportoBollo");
				importoBollo.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getImportoBolloVirtuale()))));
				datiBollo.appendChild(importoBollo);
			}
			if(documento.getCassaPrevidenziale().length() > 0)
			{
				Element datiCassaPrevidenziale = doc.createElement("DatiCassaPrevidenziale");
				datiGeneraliDocumento.appendChild(datiCassaPrevidenziale);
			
				Element tipoCassa = doc.createElement("TipoCassa");
				tipoCassa.appendChild(doc.createTextNode(documento.getCassaPrevidenziale()));
				datiCassaPrevidenziale.appendChild(tipoCassa);
			
				Element alCassa = doc.createElement("AlCassa");
				alCassa.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getAliquotaCassa()))));
				datiCassaPrevidenziale.appendChild(alCassa);
			
				Element importoContributoCassa = doc.createElement("ImportoContributoCassa");
				importoContributoCassa.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getImportoContributoCassa()))));
				datiCassaPrevidenziale.appendChild(importoContributoCassa);
			/*
				Element imponibileCassa = doc.createElement("ImponibileCassa");
				imponibileCassa.appendChild(doc.createTextNode());
				datiCassaPrevidenziale.appendChild(imponibileCassa);
			*/
				Element aliquotaIvaCassa = doc.createElement("AliquotaIVA");
				aliquotaIvaCassa.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getAliquotaIvaCassa()))));
				datiCassaPrevidenziale.appendChild(aliquotaIvaCassa);
				
				if(documento.getRitenutaCassa().length() > 0)
				{
					Element ritenuta = doc.createElement("Ritenuta");
					ritenuta.appendChild(doc.createTextNode(documento.getRitenutaCassa()));
					datiCassaPrevidenziale.appendChild(ritenuta);
				}
				if(documento.getNaturaCassa().length() > 0)
				{
					Element natura = doc.createElement("Natura");
					natura.appendChild(doc.createTextNode(documento.getNaturaCassa()));
					datiCassaPrevidenziale.appendChild(natura);
				}
				/*
				Element riferimentoAmministrazione = doc.createElement("RiferimentoAmministrazione");
				riferimentoAmministrazione.appendChild(doc.createTextNode(""));
				datiCassaPrevidenziale.appendChild(riferimentoAmministrazione);*/
			}
			if(documento.getTipoScontoMaggiorazione().length() > 0)
			{
				Element scontoMaggiorazione = doc.createElement("ScontoMaggiorazione");
				datiGeneraliDocumento.appendChild(scontoMaggiorazione);
				
				Element tipo = doc.createElement("Tipo");
				tipo.appendChild(doc.createTextNode(documento.getTipoScontoMaggiorazione()));
				scontoMaggiorazione.appendChild(tipo);
			
				Element percentuale = doc.createElement("Percentuale");
				percentuale.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getPercentualeScontoMaggiorazione()))));
				scontoMaggiorazione.appendChild(percentuale);
			
				Element importo = doc.createElement("Importo");
				importo.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getImportoScontoMaggiorazione()))));
				scontoMaggiorazione.appendChild(importo);
			}
			
			Element importoTotaleDocumento = doc.createElement("ImportoTotaleDocumento");
			importoTotaleDocumento.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getImportoTotale()))));
			datiGeneraliDocumento.appendChild(importoTotaleDocumento);
			/*
			Element arrotondamento = doc.createElement("Arrotondamento");
			arrotondamento.appendChild(doc.createTextNode(documento.getArrotondamento()));
			datiGeneraliDocumento.appendChild(arrotondamento);
			
			Element causale = doc.createElement("Causale");
			causale.appendChild(doc.createTextNode(documento.getCausale()));
			datiGeneraliDocumento.appendChild(causale);
			*/
			if(documento.getArticolo73().equals("SI"))
			{
				Element art = doc.createElement("Art73");
				art.appendChild(doc.createTextNode("SI"));
				datiGeneraliDocumento.appendChild(art);
			}
			
/*			
			DynamicQuery dynamicQuery = LineaFatturaLocalServiceUtil.dynamicQuery();

		    ProjectionList projectionList = ProjectionFactoryUtil.projectionList();

		    projectionList.add(ProjectionFactoryUtil.groupProperty("numeroDdt"));
		    projectionList.add(ProjectionFactoryUtil.rowCount());

		    dynamicQuery.setProjection(projectionList);

		    List<Object[]> results = LineaFatturaLocalServiceUtil.dynamicQuery(dynamicQuery);
		    
		    for(Object[] r : results)
		    {
		    	System.out.println("ddddd " + r[0]);
		    }
	*/	    
			/*
			if(competenze.size() > 0)
			{
				for(LineaFattura competenza : results)
				{
					// DATI ORDINE ACQUISTO
					Element datiOrdineAcquisto = doc.createElement("DatiOrdineAcquisto");
					datiGenerali.appendChild(datiOrdineAcquisto);
					if(competenza.getIdDocumentoOrdine().length() > 0)
					{
						Element riferimentoNumeroLinea = doc.createElement("RiferimentoNumeroLinea");
						riferimentoNumeroLinea.appendChild(doc.createTextNode(competenza.getNumeroLinea()));
						datiOrdineAcquisto.appendChild(riferimentoNumeroLinea);
					}
								
					Element idDocumento = doc.createElement("IdDocumento");
					idDocumento.appendChild(doc.createTextNode(competenza.getIdDocumentoOrdine()));
					datiOrdineAcquisto.appendChild(idDocumento);
			
					Element dataOrdAcqu = doc.createElement("Data");
					dataOrdAcqu.appendChild(doc.createTextNode(competenza.getDataOrdine()));
					datiOrdineAcquisto.appendChild(dataOrdAcqu);
			/*
					Element numItem = doc.createElement("NumItem");
					numItem.appendChild(doc.createTextNode(""));
					datiOrdineAcquisto.appendChild(numItem);
			
					Element codiceCommessaConvenzione = doc.createElement("CodiceCommessaConvenzione");
					codiceCommessaConvenzione.appendChild(doc.createTextNode(""));
					datiOrdineAcquisto.appendChild(codiceCommessaConvenzione);
			
					if(competenza.getCodiceCupOrdine().length() > 0)
					{
						Element codiceCUP = doc.createElement("CodiceCUP");
						codiceCUP.appendChild(doc.createTextNode(competenza.getCodiceCupOrdine()));
						datiOrdineAcquisto.appendChild(codiceCUP);
					}
					if(competenza.getCodiceCigOrdine().length() > 0)
					{
						Element codiceCIG = doc.createElement("CodiceCIG");
						codiceCIG.appendChild(doc.createTextNode(competenza.getCodiceCigOrdine()));
						datiOrdineAcquisto.appendChild(codiceCIG);	
					}
				}
			}
			// DATI CONTRATTO
			Element datiContratto = doc.createElement("DatiContratto");
			datiGenerali.appendChild(datiContratto);
			// DATI CONVENZIONE
			Element datiConvenzione = doc.createElement("DatiConvenzione");
			datiGenerali.appendChild(datiConvenzione);
			// DATI RICEZIONE
			Element datiRicezione = doc.createElement("DatiRicezione");
			datiGenerali.appendChild(datiRicezione);
			// DATI DATI FATTURE COLLEGATE
			Element datiFattureCollegate = doc.createElement("DatiFattureCollegate");
			datiGenerali.appendChild(datiFattureCollegate);
			
			// DATI SAL
			Element datiSal = doc.createElement("DatiSAL");
			datiGenerali.appendChild(datiSal);
			
			Element riferimentoFase = doc.createElement("RiferimentoFase");
			riferimentoFase.appendChild(doc.createTextNode(""));
			datiSal.appendChild(riferimentoFase);
		
			for(LineaFattura competenza : competenze)
			{
				if(competenza.getNumeroDdt().length() > 0)
				{
					Element datiDdt = doc.createElement("DatiDDT");
					datiGenerali.appendChild(datiDdt);
					
					Element numeroDdt = doc.createElement("NumeroDDT");
					numeroDdt.appendChild(doc.createTextNode(competenza.getNumeroDdt()));
					datiDdt.appendChild(numeroDdt);
					
					Element dataDdt = doc.createElement("DataDDT");
					dataDdt.appendChild(doc.createTextNode(competenza.getDataDdt()));
					datiDdt.appendChild(dataDdt);
					for(LineaFattura c : competenze)
					{
						if(c.getDataDdt().equals(competenza.getDataDdt()) && (c.getNumeroDdt().equals(competenza.getNumeroDdt())))
						{
							Element riferimentoNumeroLineaDdt = doc.createElement("RiferimentoNumeroLinea");
							riferimentoNumeroLineaDdt.appendChild(doc.createTextNode(c.getNumeroLinea()));
							datiDdt.appendChild(riferimentoNumeroLineaDdt);
						}
					}
				}
			}
		*/
			try
			{
				DatiTrasporto datoTrasporto = DatiTrasportoLocalServiceUtil.getDatoTrasporto(documentoId);
				
				Element datiTrasporto = doc.createElement("DatiTrasporto");
				datiGenerali.appendChild(datiTrasporto);
				
				Element datiAnagraficiVettore = doc.createElement("DatiAnagraficiVettore");
				datiTrasporto.appendChild(datiAnagraficiVettore);
				
				Element idFiscaleIvaTrasporto = doc.createElement("IdFiscaleIVA");
				datiAnagraficiVettore.appendChild(idFiscaleIvaTrasporto);
				
				Element idPaeseTras = doc.createElement("IdPaese");
				idPaeseTras.appendChild(doc.createTextNode(datoTrasporto.getIdPaese()));
				idFiscaleIvaTrasporto.appendChild(idPaeseTras);
				
				Element idCodice = doc.createElement("IdCodice");
				idCodice.appendChild(doc.createTextNode(datoTrasporto.getIdCodice()));
				idFiscaleIvaTrasporto.appendChild(idCodice);
				
				Element codiceFiscaleTrasporto = doc.createElement("CodiceFiscale");
				codiceFiscaleTrasporto.appendChild(doc.createTextNode(datoTrasporto.getCodiceFiscale()));
				datiAnagraficiVettore.appendChild(codiceFiscaleTrasporto);
				
				Element anagraficaTrasporto = doc.createElement("Anagrafica");
				datiAnagraficiVettore.appendChild(anagraficaTrasporto);
				
				Element denominazioneTrasporto = doc.createElement("Denominazione");
				denominazioneTrasporto.appendChild(doc.createTextNode(datoTrasporto.getDenominazione()));
				anagraficaTrasporto.appendChild(denominazioneTrasporto);
				
				Element nomeTrasporto = doc.createElement("Nome");
				nomeTrasporto.appendChild(doc.createTextNode(datoTrasporto.getNome()));
				anagraficaTrasporto.appendChild(nomeTrasporto);
				
				Element cognomeTrasporto = doc.createElement("Cognome");
				cognomeTrasporto.appendChild(doc.createTextNode(datoTrasporto.getCognome()));
				anagraficaTrasporto.appendChild(cognomeTrasporto);
				
				Element codeoriTrasporto = doc.createElement("CodEORI");
				codeoriTrasporto.appendChild(doc.createTextNode(datoTrasporto.getCodeori()));
				anagraficaTrasporto.appendChild(codeoriTrasporto);
				
				Element numeroLicenzaGuida = doc.createElement("NumeroLicenzaGuida");
				numeroLicenzaGuida.appendChild(doc.createTextNode(datoTrasporto.getNumeroLicenzaGuida()));
				datiAnagraficiVettore.appendChild(numeroLicenzaGuida);
				
				Element mezzoTrasporto = doc.createElement("MezzoTrasporto");
				mezzoTrasporto.appendChild(doc.createTextNode(datoTrasporto.getMezzoTrasporto()));
				datiTrasporto.appendChild(mezzoTrasporto);
				
				Element causaleTrasporto = doc.createElement("CusaleTrasporto");
				causaleTrasporto.appendChild(doc.createTextNode(""));
				datiTrasporto.appendChild(causaleTrasporto);
				
				Element numeroColli = doc.createElement("NumeroColli");
				numeroColli.appendChild(doc.createTextNode(datoTrasporto.getNumeroColli()));
				datiTrasporto.appendChild(numeroColli);
				
				Element descrizioneTrasporto = doc.createElement("Descrizione");
				descrizioneTrasporto.appendChild(doc.createTextNode(datoTrasporto.getDescrizione()));
				datiTrasporto.appendChild(descrizioneTrasporto);
				
				Element unitaMisuraPeso = doc.createElement("UnitaMisuraPeso");
				unitaMisuraPeso.appendChild(doc.createTextNode(datoTrasporto.getUnitaMisuraPeso()));
				datiTrasporto.appendChild(unitaMisuraPeso);
				
				Element pesoLordo = doc.createElement("PesoLordo");
				pesoLordo.appendChild(doc.createTextNode(datoTrasporto.getPesoLordo()));
				datiTrasporto.appendChild(pesoLordo);
				
				Element pesoNetto = doc.createElement("PesoNetto");
				pesoNetto.appendChild(doc.createTextNode(datoTrasporto.getPesoNetto()));
				datiTrasporto.appendChild(pesoNetto);
				
				Element dataOraRitiro = doc.createElement("DataOraRitiro");
				dataOraRitiro.appendChild(doc.createTextNode(datoTrasporto.getDataOraRitiro()));
				datiTrasporto.appendChild(dataOraRitiro);
				
				Element dataInizioTrasporto = doc.createElement("DataInizioTrasporto");
				dataInizioTrasporto.appendChild(doc.createTextNode(datoTrasporto.getDataInizioTrasporto()));
				datiTrasporto.appendChild(dataInizioTrasporto);
				
				Element tipoResa = doc.createElement("TipoResa");
				tipoResa.appendChild(doc.createTextNode(datoTrasporto.getTipoResa()));
				datiTrasporto.appendChild(tipoResa);
				
				Element indirizzoResa = doc.createElement("IndirizzoResa");
				datiTrasporto.appendChild(indirizzoResa);
				
				Element indResa = doc.createElement("Indirizzo");
				indResa.appendChild(doc.createTextNode(datoTrasporto.getIndirizzoResa()));
				indirizzoResa.appendChild(indResa);
				
				Element numeroCivico = doc.createElement("NumeroCivico");
				numeroCivico.appendChild(doc.createTextNode(datoTrasporto.getNumeroCivicoResa()));
				indirizzoResa.appendChild(numeroCivico);
				
				Element capResa = doc.createElement("CAP");
				capResa.appendChild(doc.createTextNode(datoTrasporto.getCapResa()));
				indirizzoResa.appendChild(capResa);
				
				Element comuneResa = doc.createElement("Comune");
				comuneResa.appendChild(doc.createTextNode(datoTrasporto.getComuneResa()));
				indirizzoResa.appendChild(comuneResa);
				
				Element provinciaResa = doc.createElement("Provincia");
				provinciaResa.appendChild(doc.createTextNode(datoTrasporto.getProvinciaResa()));
				indirizzoResa.appendChild(provinciaResa);
				
				Element nazioneResa = doc.createElement("Nazione");
				nazioneResa.appendChild(doc.createTextNode(datoTrasporto.getNazioneResa()));
				indirizzoResa.appendChild(nazioneResa);
				
				Element dataOraConsegnaResa = doc.createElement("DataOraConsegna");
				dataOraConsegnaResa.appendChild(doc.createTextNode(datoTrasporto.getDataOraConsegna()));
				datiTrasporto.appendChild(dataOraConsegnaResa);
			
			}catch(Exception e)
			{
				System.out.println("nessun dato trasporto ");
			}
			
			/*
			// DATI FatturaPrincipale
			Element fatturaPrincipale = doc.createElement("FatturaPrincipale");
			datiGenerali.appendChild(fatturaPrincipale);
			
			Element numeroFatturaPrincipale = doc.createElement("NumeroFatturaPrincipale");
			numeroFatturaPrincipale.appendChild(doc.createTextNode(""));
			fatturaPrincipale.appendChild(numeroFatturaPrincipale);
			
			Element dataFatturaPrincipale = doc.createElement("DataFatturaPrincipale");
			dataFatturaPrincipale.appendChild(doc.createTextNode(""));
			fatturaPrincipale.appendChild(dataFatturaPrincipale);
			**/
			// BENI E SERVIZI
			Element datiBeniServizi = doc.createElement("DatiBeniServizi");
			fatturaElettronicaBody.appendChild(datiBeniServizi);
			
			Element aliquotaIVA = doc.createElement("AliquotaIVA");

			double aliquotaIvaCompetenza = 0;
			
			if(competenze.size() > 0)
			{
				for(LineaFattura competenza : competenze)
				{
					Element dettaglioLinee = doc.createElement("DettaglioLinee");
					datiBeniServizi.appendChild(dettaglioLinee);
					
					Element numeroLinea = doc.createElement("NumeroLinea");
					numeroLinea.appendChild(doc.createTextNode(competenza.getNumeroLinea()));
					dettaglioLinee.appendChild(numeroLinea);
					if(competenza.getTipoPrestazione().length() > 0)
					{
						Element tipoCessionePrestazione = doc.createElement("TipoCessionePrestazione");
						tipoCessionePrestazione.appendChild(doc.createTextNode(competenza.getTipoPrestazione()));
						dettaglioLinee.appendChild(tipoCessionePrestazione);
					}
					/*
					Element codiceArticolo = doc.createElement("CodiceArticolo");
					dettaglioLinee.appendChild(codiceArticolo);
				
					Element codiceTipo = doc.createElement("CodiceTipo");
					codiceTipo.appendChild(doc.createTextNode(""));
					codiceArticolo.appendChild(codiceTipo);
				
					Element codiceValore = doc.createElement("CodiceValore");
					codiceValore.appendChild(doc.createTextNode(""));
					codiceArticolo.appendChild(codiceValore);
					*/
					Element descrizione = doc.createElement("Descrizione");
					descrizione.appendChild(doc.createTextNode(competenza.getDescrizione()));
					dettaglioLinee.appendChild(descrizione);
				
					Element quantita = doc.createElement("Quantita");
					quantita.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(competenza.getQuantita()))));
					dettaglioLinee.appendChild(quantita);
					/*
					Element unitaMisura = doc.createElement("UnitaMisura");
					unitaMisura.appendChild(doc.createTextNode(""));
					dettaglioLinee.appendChild(unitaMisura);
					 */
					Element dataInizioPeriodo = doc.createElement("DataInizioPeriodo");
					dataInizioPeriodo.appendChild(doc.createTextNode(competenza.getDataInizio()));
					dettaglioLinee.appendChild(dataInizioPeriodo);
				
					Element dataFinePeriodo = doc.createElement("DataFinePeriodo");
					dataFinePeriodo.appendChild(doc.createTextNode(competenza.getDataFine()));
					dettaglioLinee.appendChild(dataFinePeriodo);
				
					Element prezzoUnitario = doc.createElement("PrezzoUnitario");
					prezzoUnitario.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(competenza.getPrezzoUnitario()))));
					dettaglioLinee.appendChild(prezzoUnitario);
					/*
					Element scontoMaggiorazione1 = doc.createElement("ScontoMaggiorazione");
					dettaglioLinee.appendChild(scontoMaggiorazione1);
					
					Element tipo1 = doc.createElement("Tipo");
					tipo1.appendChild(doc.createTextNode(""));
					scontoMaggiorazione1.appendChild(tipo1);
					
					Element percentuale1 = doc.createElement("Percentuale");
					percentuale1.appendChild(doc.createTextNode(""));
					scontoMaggiorazione1.appendChild(percentuale1);
					
					Element importo1 = doc.createElement("Importo");
					importo1.appendChild(doc.createTextNode(""));
					scontoMaggiorazione1.appendChild(importo1);
					*/
					Element prezzoTotale = doc.createElement("PrezzoTotale");
					prezzoTotale.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(competenza.getPrezzoTotale())).replace(",", ".")));
					dettaglioLinee.appendChild(prezzoTotale);
					
					Element aliquotaIvaCom = doc.createElement("AliquotaIVA");
					aliquotaIvaCompetenza = Double.valueOf(competenza.getAliquotaIvaLinea());
					aliquotaIvaCom.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(competenza.getAliquotaIvaLinea()))));
					dettaglioLinee.appendChild(aliquotaIvaCom);
					
					/*
					Element ritenutaCompetenza = doc.createElement("Ritenuta");
					ritenutaCompetenza.appendChild(doc.createTextNode(competenza.getRitenuta()));
					dettaglioLinee.appendChild(ritenutaCompetenza);
					
					Element naturaCompetenza = doc.createElement("Natura");
					naturaCompetenza.appendChild(doc.createTextNode(competenza.getNatura()));
					dettaglioLinee.appendChild(naturaCompetenza);
					
					Element riferimentoAmministrazione1 = doc.createElement("RiferimentoAmministrazione");
					riferimentoAmministrazione1.appendChild(doc.createTextNode(competenza.getRiferimentoAmministrativo()));
					dettaglioLinee.appendChild(riferimentoAmministrazione1);
					
					Element altriDatiGestionali = doc.createElement("AltriDatiGestionali");
					dettaglioLinee.appendChild(altriDatiGestionali);
					
					Element tipoDato = doc.createElement("TipoDato");
					tipoDato.appendChild(doc.createTextNode(""));
					altriDatiGestionali.appendChild(tipoDato);
					
					Element riferimentoTesto = doc.createElement("RiferimentoTesto");
					riferimentoTesto.appendChild(doc.createTextNode(""));
					altriDatiGestionali.appendChild(riferimentoTesto);
					
					Element riferimentoNumero = doc.createElement("RiferimentoNumero");
					riferimentoNumero.appendChild(doc.createTextNode(""));
					altriDatiGestionali.appendChild(riferimentoNumero);
					
					Element riferimentoData = doc.createElement("RiferimentoData");
					riferimentoData.appendChild(doc.createTextNode(""));
					altriDatiGestionali.appendChild(riferimentoData);*/

				}
			}
			
			// DATI RIEPILOGO
			Element datiRiepilogo = doc.createElement("DatiRiepilogo");
			datiBeniServizi.appendChild(datiRiepilogo);
			
			Element aliquotaIvaRiepilogo = doc.createElement("AliquotaIVA");
			aliquotaIvaRiepilogo.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(documento.getAliquotaIvaCassa()))));
			datiRiepilogo.appendChild(aliquotaIvaRiepilogo);
			
			String docId = String.valueOf(documento.getDocumentoId());			
			double imponibileIva = imponibileCassa(docId) + ( imponibileCassa(docId) * (Double.valueOf(documento.getAliquotaCassa()) / 100));
			Element imponibileImporto = doc.createElement("ImponibileImporto");			
			imponibileImporto.appendChild(doc.createTextNode(decimalFormat.format(imponibileIva)));
			datiRiepilogo.appendChild(imponibileImporto);
			
			double iva = Double.valueOf(aliquotaIvaCompetenza) / 100; 
			double impostaDouble = (Double.valueOf(documento.getImponibileCassa()) + Double.valueOf(documento.getImportoContributoCassa())) * iva;
			
			Element imposta = doc.createElement("Imposta");
			imposta.appendChild(doc.createTextNode(decimalFormat.format(Double.valueOf(impostaDouble))));
			datiRiepilogo.appendChild(imposta);
			
			Element esigibilitaIVA = doc.createElement("EsigibilitaIVA");
			esigibilitaIVA.appendChild(doc.createTextNode(documento.getEsigibilitaIva()));
			datiRiepilogo.appendChild(esigibilitaIVA);
			
			/*
			// DatiVeicoli
			Element datiVeiocoli = doc.createElement("DatiVeicoli");
			fatturaElettronicaBody.appendChild(datiVeiocoli);
			
			Element DataV = doc.createElement("Data");
			DataV.appendChild(doc.createTextNode(""));
			datiVeiocoli.appendChild(DataV);
			
			Element totalePercorso = doc.createElement("TotalePercorso");
			totalePercorso.appendChild(doc.createTextNode(""));
			datiVeiocoli.appendChild(totalePercorso);
			*/
			// DATI PAGAMENTO
			
			Pagamenti pagamento = PagamentiLocalServiceUtil.getPagamento(documentoId);
			
			Element datiPagamento = doc.createElement("DatiPagamento");
			fatturaElettronicaBody.appendChild(datiPagamento);
			
			Element condizioniPagamento = doc.createElement("CondizioniPagamento");
			condizioniPagamento.appendChild(doc.createTextNode(pagamento.getCondizioniPagamento()));
			datiPagamento.appendChild(condizioniPagamento);
			
			Element dettaglioPagamento = doc.createElement("DettaglioPagamento");
			datiPagamento.appendChild(dettaglioPagamento);
			
			Element beneficiario = doc.createElement("Beneficiario");
			beneficiario.appendChild(doc.createTextNode(pagamento.getBeneficiario()));
			dettaglioPagamento.appendChild(beneficiario);
			
			Element modalitaPagamento = doc.createElement("ModalitaPagamento");
			modalitaPagamento.appendChild(doc.createTextNode(pagamento.getModalitaPagamento()));
			dettaglioPagamento.appendChild(modalitaPagamento);
			if(pagamento.getDataTermine().length() > 0)
			{
				Element dataRiferimentoTerminiPagamento = doc.createElement("DataRiferimentoTerminiPagamento");
				dataRiferimentoTerminiPagamento.appendChild(doc.createTextNode(pagamento.getDataTermine()));
				dettaglioPagamento.appendChild(dataRiferimentoTerminiPagamento);
			}
			if(pagamento.getDataTermineGiorni().length() > 0)
			{
				Element giorniTerminiPagamento = doc.createElement("GiorniTerminiPagamento");
				giorniTerminiPagamento.appendChild(doc.createTextNode(pagamento.getDataTermineGiorni()));
				dettaglioPagamento.appendChild(giorniTerminiPagamento);
			}
			if(pagamento.getCondizioniPagamento().equals("TP01"))
			{
				Element dataScadenzaPagamento = doc.createElement("DataScadenzaPagamento");
				dataScadenzaPagamento.appendChild(doc.createTextNode(pagamento.getDataScadenzaPagamento()));
				dettaglioPagamento.appendChild(dataScadenzaPagamento);
			}
			double importoTotaleSenzaRitenuta = Double.valueOf(documento.getImportoTotale()) - Double.valueOf(documento.getImportoRitenuta());
			Element importoPagamento = doc.createElement("ImportoPagamento");
			importoPagamento.appendChild(doc.createTextNode(decimalFormat.format(importoTotaleSenzaRitenuta)));
			dettaglioPagamento.appendChild(importoPagamento);
			/*
			Element codUfficioPostale = doc.createElement("CodUfficioPostale");
			codUfficioPostale.appendChild(doc.createTextNode(pagamento.getCodUfficioPostale()));
			dettaglioPagamento.appendChild(codUfficioPostale);
			
			Element cognomeQuietanzante = doc.createElement("CognomeQuietanzante");
			cognomeQuietanzante.appendChild(doc.createTextNode(pagamento.getCognomeQuet()));
			dettaglioPagamento.appendChild(cognomeQuietanzante);
			
			Element nomeQuietanzante = doc.createElement("NomeQuietanzante");
			nomeQuietanzante.appendChild(doc.createTextNode(pagamento.getNomeQuet()));
			dettaglioPagamento.appendChild(nomeQuietanzante);
			
			Element cfQuietanzante = doc.createElement("CFQuietanzante");
			cfQuietanzante.appendChild(doc.createTextNode(pagamento.getCfQuet()));
			dettaglioPagamento.appendChild(cfQuietanzante);
			/*
			Element titoloQuietanzante = doc.createElement("TitoloQuietanzante");
			titoloQuietanzante.appendChild(doc.createTextNode(""));
			dettaglioPagamento.appendChild(titoloQuietanzante);
		*/
			Element istitutoFinanziario = doc.createElement("IstitutoFinanziario");
			istitutoFinanziario.appendChild(doc.createTextNode(pagamento.getIstitutoFinanziario()));
			dettaglioPagamento.appendChild(istitutoFinanziario);
			if(pagamento.getIban().length() > 0)
			{
				Element iban = doc.createElement("IBAN");
				iban.appendChild(doc.createTextNode(pagamento.getIban()));
				dettaglioPagamento.appendChild(iban);
			}else if(pagamento.getIban().length() == 0 && pagamento.getAbi().length() > 0 && pagamento.getCab().length() > 0 && pagamento.getBic().length() > 0){
			
			Element abi = doc.createElement("ABI");
			abi.appendChild(doc.createTextNode(pagamento.getAbi()));
			dettaglioPagamento.appendChild(abi);
			
			Element cab = doc.createElement("CAB");
			cab.appendChild(doc.createTextNode(pagamento.getCab()));
			dettaglioPagamento.appendChild(cab);
			
			Element bic = doc.createElement("BIC");
			bic.appendChild(doc.createTextNode(pagamento.getBic()));
			dettaglioPagamento.appendChild(bic);
			}
			/*Element scontoPagamentoAnticipato = doc.createElement("ScontoPagamentoAnticipato");
			scontoPagamentoAnticipato.appendChild(doc.createTextNode(pagamento.getScontoPagamentoAnticipato()));
			dettaglioPagamento.appendChild(scontoPagamentoAnticipato);
			
			Element dataLimitePagamentoAnticipato = doc.createElement("DataLimitePagamentoAnticipato");
			dataLimitePagamentoAnticipato.appendChild(doc.createTextNode(pagamento.getDataPagamentoAnticipato()));
			dettaglioPagamento.appendChild(dataLimitePagamentoAnticipato);
			
			Element penalitaPagamentiRitardati = doc.createElement("PenalitaPagamentiRitardati");
			penalitaPagamentiRitardati.appendChild(doc.createTextNode(pagamento.getPenaleRitardo()));
			dettaglioPagamento.appendChild(penalitaPagamentiRitardati);
			
			Element dataDecorrenzaPenale = doc.createElement("DataDecorrenzaPenale");
			dataDecorrenzaPenale.appendChild(doc.createTextNode(pagamento.getDataPenaleRitardo()));
			dettaglioPagamento.appendChild(dataDecorrenzaPenale);
			
			Element codicePagamento = doc.createElement("CodicePagamento");
			codicePagamento.appendChild(doc.createTextNode(pagamento.getCodicePagamento()));
			dettaglioPagamento.appendChild(codicePagamento);
			*/
			// write the content into xml file
			TransformerFactory transformerFactory = TransformerFactory.newInstance();
			Transformer transformer = transformerFactory.newTransformer();

			DocumentoXml docxml = null;
			try{
				DocumentoXmlLocalServiceUtil.deleteDocumentoXml(DocumentoXmlLocalServiceUtil.getDocumentoXmlByDocumentoId(documentoId));
				docxml = DocumentoXmlLocalServiceUtil.createDocumentoXml(CounterLocalServiceUtil.increment(DocumentoXml.class.getName()));
				docxml.setAnnoCreazione(documento.getDataDocumento().split("-")[0]);
				docxml.setDocumentoIDFK(documentoId);
				docxml.setDocumentoXml(convertDocumentToString(doc));
				DocumentoXmlLocalServiceUtil.addDocumentoXml(docxml);
			}catch(Exception ex){
				docxml = DocumentoXmlLocalServiceUtil.createDocumentoXml(CounterLocalServiceUtil.increment(DocumentoXml.class.getName()));
				docxml.setAnnoCreazione(documento.getDataDocumento().split("-")[0]);
				docxml.setDocumentoIDFK(documentoId);
				docxml.setDocumentoXml(convertDocumentToString(doc));
				DocumentoXmlLocalServiceUtil.addDocumentoXml(docxml);
			}
			
			Document document = convertStringToDocument(docxml.getDocumentoXml());
			
			File outputFile = new File(realPath+"/"+nomeFileXml);
			StreamResult result = new StreamResult(outputFile);	
			DOMSource source = new DOMSource(document);
			transformer.transform(source, result);
			
			DLFolder folder = null;
			try{
				folder = DLFolderLocalServiceUtil.getFolder(themeDisplay.getScopeGroupId(), 0, trasmittente.getCodiceFiscale());
				DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.getFileEntry(themeDisplay.getScopeGroupId(), folder.getFolderId(), nomeFileXml);
				DLFileEntryLocalServiceUtil.deleteDLFileEntry(fileEntry.getFileEntryId());
				DLAppLocalServiceUtil.addFileEntry(themeDisplay.getUserId(), themeDisplay.getScopeGroupId(), folder.getFolderId(), nomeFileXml, new MimetypesFileTypeMap().getContentType(outputFile), nomeFileXml, "", "", outputFile,serviceContext);
			}catch (Exception e) {
				try{
					folder = DLFolderLocalServiceUtil.addFolder(themeDisplay.getUserId(), themeDisplay.getScopeGroupId(), themeDisplay.getScopeGroupId(), false, 0, trasmittente.getCodiceFiscale(), "",serviceContext);
					DLAppLocalServiceUtil.addFileEntry(themeDisplay.getUserId(), themeDisplay.getScopeGroupId(), folder.getFolderId(), nomeFileXml, new MimetypesFileTypeMap().getContentType(outputFile), nomeFileXml, "", "", outputFile,serviceContext);
				}catch(Exception ex){
					DLAppLocalServiceUtil.addFileEntry(themeDisplay.getUserId(), themeDisplay.getScopeGroupId(), folder.getFolderId(), nomeFileXml, new MimetypesFileTypeMap().getContentType(outputFile), nomeFileXml, "", "", outputFile,serviceContext);
				}
			}		
			
			DLFileEntry file = DLFileEntryLocalServiceUtil.getFileEntry(themeDisplay.getScopeGroupId(), folder.getFolderId(), documento.getNomeDocumento());
			actionResponse.sendRedirect(themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + StringPool.SLASH + file.getUuid());
			
		  } catch (ParserConfigurationException pce) {
			pce.printStackTrace();
		  } catch (TransformerException tfe) {
			tfe.printStackTrace();
		  } catch (NumberFormatException e) {
			e.printStackTrace();
		  } catch (PortalException e) {
			e.printStackTrace();
		  } catch (SystemException e) {
			e.printStackTrace();
		  }
		}

	public void inviaDocumento(ActionRequest actionRequest, ActionResponse actionResponse)
			throws IOException, PortletException, SystemException, NumberFormatException, PortalException {
		
		ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
		DocumentoXml docxml = DocumentoXmlLocalServiceUtil.getDocumentoXml(0);
		Documento doc = DocumentoLocalServiceUtil.getDocumento(docxml.getDocumentoIDFK());
		Trasmittente trasmittente = TrasmittenteLocalServiceUtil.getTrasmittente(0);
		
		DLFolder folder = DLFolderLocalServiceUtil.getFolder(themeDisplay.getScopeGroupId(), 0, trasmittente.getCodiceFiscale());
		DLFileEntry dlFile = DLFileEntryLocalServiceUtil.getFileEntry(themeDisplay.getScopeGroupId(), folder.getFolderId(), doc.getNomeDocumento());
		
		InputStream inputStreamFile = DLFileEntryLocalServiceUtil.getFileAsStream(themeDisplay.getUserId(), dlFile.getFileEntryId(), "");
		byte[] file = IOUtils.toByteArray(inputStreamFile);
				
	}
	
	public void uploadDocumentoFirmato(ActionRequest actionRequest,
            ActionResponse actionRresponse) throws PortletException,
            IOException, PortalException, SystemException {
 
			ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
			String realPath = getPortletContext().getRealPath("/");
			String trasmittenteId = "";
			if(ParamUtil.getString(actionRequest , "trasmittenteId") != null)
			{
				trasmittenteId = ParamUtil.getString(actionRequest , "trasmittenteId");
			}else{
				HttpServletRequest trasmittenteIdReq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(actionRequest));
				trasmittenteId = trasmittenteIdReq.getParameter("trasmittenteId");
			}
			
			Trasmittente trasmittente = TrasmittenteLocalServiceUtil.getTrasmittente(Long.valueOf(trasmittenteId));
			
			try {
				
				UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(actionRequest);
				if (uploadRequest.getSize("fileName")==0) {
					SessionErrors.add(actionRequest, "error");
				}

				String sourceFileName = uploadRequest.getFileName("fileName");
				/*File file = uploadRequest.getFile("fileName");
				File newFile = new File(realPath + sourceFileName);*/
				
				InputStream in = new BufferedInputStream(uploadRequest.getFileAsStream("fileName"));
				
				/*FileInputStream fis = new FileInputStream(file);
				FileOutputStream fos = new FileOutputStream(newFile);*/
				
				byte[] bytes_ = FileUtil.getBytes(in);
				byte[] encoded = Base64.encodeBase64(bytes_);
				
				
				
				/*	
				int i = fis.read(bytes_);
				while (i != -1) {
					fos.write(bytes_, 0, i);
					i = fis.read(bytes_);
				}
				
				fis.close();
				fos.close();
				*/
				SessionMessages.add(actionRequest, "success");

			} catch (FileNotFoundException e) {
				System.out.println("File Not Found.");
				e.printStackTrace();
				SessionMessages.add(actionRequest, "error");
			} catch (NullPointerException e) {
				System.out.println("File Not Found");
				e.printStackTrace();
				SessionMessages.add(actionRequest, "error");
			}

			catch (IOException e1) {
				System.out.println("Error Reading The File.");
				SessionMessages.add(actionRequest, "error");
				e1.printStackTrace();
			}
        
    }
	
	 private static String convertDocumentToString(Document doc) {
	        TransformerFactory tf = TransformerFactory.newInstance();
	        Transformer transformer;
	        String output = "";
	        try {
	            transformer = tf.newTransformer();
	            // below code to remove XML declaration
	            // transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
	            StringWriter writer = new StringWriter();
	            transformer.transform(new DOMSource(doc), new StreamResult(writer));
	            output = writer.getBuffer().toString();
	            
	        } catch (TransformerException e) {
	            e.printStackTrace();
	        }
	         
	        return output;
	    }
	 
	    private static Document convertStringToDocument(String xmlStr) {
	        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
	        DocumentBuilder builder; 
	        Document doc = null;
	        try 
	        {  
	            builder = factory.newDocumentBuilder();  
	            doc = builder.parse( new InputSource( new StringReader( xmlStr ) ) ); 
	            
	        } catch (Exception e) {  
	            e.printStackTrace();  
	        } 
	        return doc;
	    }
	    
}
